assets/brain-icons.json
{
"categories": {
"creative": {
"hue": "#6d5cf0",
"glyph": "<g stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><line x1=\"22\" y1=\"6.5\" x2=\"22\" y2=\"12.5\"/><line x1=\"22\" y1=\"31.5\" x2=\"22\" y2=\"37.5\"/><line x1=\"6.5\" y1=\"22\" x2=\"12.5\" y2=\"22\"/><line x1=\"31.5\" y1=\"22\" x2=\"37.5\" y2=\"22\"/><line x1=\"11.3\" y1=\"11.3\" x2=\"15.5\" y2=\"15.5\"/><line x1=\"28.5\" y1=\"28.5\" x2=\"32.7\" y2=\"32.7\"/><line x1=\"32.7\" y1=\"11.3\" x2=\"28.5\" y2=\"15.5\"/><line x1=\"15.5\" y1=\"28.5\" x2=\"11.3\" y2=\"32.7\"/></g><circle cx=\"22\" cy=\"22\" r=\"6.6\" fill=\"currentColor\" fill-opacity=\"0.25\"/><circle cx=\"22\" cy=\"22\" r=\"3.6\" fill=\"currentColor\"/>"
},
"deep": {
"hue": "#4658c9",
"glyph": "<g fill=\"none\" stroke=\"currentColor\"><circle cx=\"22\" cy=\"22\" r=\"13\" stroke-width=\"1.5\" stroke-opacity=\"0.4\"/><circle cx=\"22\" cy=\"22\" r=\"9\" stroke-width=\"1.7\" stroke-opacity=\"0.7\"/><circle cx=\"22\" cy=\"22\" r=\"5\" stroke-width=\"1.9\"/></g><circle cx=\"22\" cy=\"22\" r=\"2.4\" fill=\"currentColor\"/>"
},
"structured": {
"hue": "#3b6ea5",
"glyph": "<g fill=\"currentColor\"><rect x=\"11\" y=\"11\" width=\"9.5\" height=\"9.5\" rx=\"2\"/><rect x=\"23.5\" y=\"11\" width=\"9.5\" height=\"9.5\" rx=\"2\" fill-opacity=\"0.25\"/><rect x=\"11\" y=\"23.5\" width=\"9.5\" height=\"9.5\" rx=\"2\" fill-opacity=\"0.25\"/><rect x=\"23.5\" y=\"23.5\" width=\"9.5\" height=\"9.5\" rx=\"2\"/></g>"
},
"quantum": {
"hue": "#2b86d9",
"glyph": "<g stroke=\"currentColor\" stroke-width=\"1.8\" fill=\"none\"><ellipse cx=\"22\" cy=\"22\" rx=\"14.5\" ry=\"6\" transform=\"rotate(28 22 22)\"/><ellipse cx=\"22\" cy=\"22\" rx=\"14.5\" ry=\"6\" transform=\"rotate(-28 22 22)\"/></g><circle cx=\"22\" cy=\"22\" r=\"6.6\" fill=\"currentColor\" fill-opacity=\"0.18\"/><circle cx=\"22\" cy=\"22\" r=\"3.4\" fill=\"currentColor\"/><circle cx=\"33.2\" cy=\"17.4\" r=\"2\" fill=\"currentColor\"/>"
},
"speculative_future": {
"hue": "#0fb5c9",
"glyph": "<g stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"><path d=\"M11 31 L 26.5 15.5\"/><path d=\"M20 14.5 H 28 V 22.5\"/></g><circle cx=\"31\" cy=\"12\" r=\"2.8\" fill=\"currentColor\"/><g stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\"><line x1=\"31\" y1=\"6.5\" x2=\"31\" y2=\"8.4\"/><line x1=\"31\" y1=\"15.6\" x2=\"31\" y2=\"17.5\"/><line x1=\"25.5\" y1=\"12\" x2=\"27.4\" y2=\"12\"/><line x1=\"34.6\" y1=\"12\" x2=\"36.5\" y2=\"12\"/></g>"
},
"collaborative": {
"hue": "#15a3a3",
"glyph": "<g stroke=\"currentColor\" stroke-width=\"1.8\"><line x1=\"14\" y1=\"16\" x2=\"30\" y2=\"16\"/><line x1=\"14\" y1=\"16\" x2=\"22\" y2=\"30\"/><line x1=\"30\" y1=\"16\" x2=\"22\" y2=\"30\"/></g><g fill=\"currentColor\" fill-opacity=\"0.22\"><circle cx=\"14\" cy=\"16\" r=\"4.6\"/><circle cx=\"30\" cy=\"16\" r=\"4.6\"/><circle cx=\"22\" cy=\"30\" r=\"4.6\"/></g><g fill=\"currentColor\"><circle cx=\"14\" cy=\"16\" r=\"2.4\"/><circle cx=\"30\" cy=\"16\" r=\"2.4\"/><circle cx=\"22\" cy=\"30\" r=\"2.4\"/></g>"
},
"biomimetic": {
"hue": "#1f9d6b",
"glyph": "<path d=\"M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z\" fill=\"currentColor\" fill-opacity=\"0.22\"/><path d=\"M22 9 V 35.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"/><g stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"><path d=\"M22 16 l5.6 -2.6\"/><path d=\"M22 16 l-5.6 -2.6\"/><path d=\"M22 22 l6.6 -2.6\"/><path d=\"M22 22 l-6.6 -2.6\"/><path d=\"M22 28 l5.6 -2.6\"/><path d=\"M22 28 l-5.6 -2.6\"/></g>"
},
"constraint": {
"hue": "#d9882b",
"glyph": "<g stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"><path d=\"M17 11 H 11 V 17\"/><path d=\"M27 11 H 33 V 17\"/><path d=\"M17 33 H 11 V 27\"/><path d=\"M27 33 H 33 V 27\"/></g><circle cx=\"22\" cy=\"22\" r=\"5\" fill=\"currentColor\" fill-opacity=\"0.25\"/><circle cx=\"22\" cy=\"22\" r=\"2.6\" fill=\"currentColor\"/>"
},
"wild": {
"hue": "#e2562f",
"glyph": "<path d=\"M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z\" fill=\"currentColor\"/>"
},
"cultural": {
"hue": "#c75b39",
"glyph": "<circle cx=\"22\" cy=\"22\" r=\"13.5\" fill=\"currentColor\" fill-opacity=\"0.14\"/><g stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\"><circle cx=\"22\" cy=\"22\" r=\"13.5\"/><ellipse cx=\"22\" cy=\"22\" rx=\"6\" ry=\"13.5\"/><line x1=\"8.5\" y1=\"22\" x2=\"35.5\" y2=\"22\"/><path d=\"M11 15 H 33\" stroke-opacity=\"0.55\"/><path d=\"M11 29 H 33\" stroke-opacity=\"0.55\"/></g>"
},
"theatrical": {
"hue": "#cf4d6f",
"glyph": "<path d=\"M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z\" fill=\"currentColor\" fill-opacity=\"0.18\"/><path d=\"M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z\" stroke=\"currentColor\" stroke-width=\"1.8\" fill=\"none\"/><g fill=\"currentColor\"><circle cx=\"18.5\" cy=\"21\" r=\"1.7\"/><circle cx=\"25.5\" cy=\"21\" r=\"1.7\"/></g><path d=\"M18 27 C 20 29.5, 24 29.5, 26 27\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"/>"
},
"absurdist": {
"hue": "#e0529c",
"glyph": "<g transform=\"rotate(-12 22 22)\"><circle cx=\"22\" cy=\"22\" r=\"13\" fill=\"currentColor\" fill-opacity=\"0.14\"/><circle cx=\"22\" cy=\"22\" r=\"13\" stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\"/><path d=\"M16 19 q 2 -2.4 4 0\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"/><circle cx=\"26.5\" cy=\"18.8\" r=\"1.8\" fill=\"currentColor\"/><path d=\"M16.5 26 C 19 30, 25 30, 28 24.5\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" fill=\"none\"/></g>"
},
"introspective_delight": {
"hue": "#b15ad6",
"glyph": "<circle cx=\"22\" cy=\"13.5\" r=\"4\" fill=\"currentColor\"/><path d=\"M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z\" fill=\"currentColor\" fill-opacity=\"0.22\"/><path d=\"M10.5 31 C 12.5 23, 31.5 23, 33.5 31\" stroke=\"currentColor\" stroke-width=\"1.7\" fill=\"none\"/><path d=\"M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30\" stroke=\"currentColor\" stroke-width=\"1.5\" fill=\"none\" stroke-opacity=\"0.6\"/>"
}
},
"techniques": {
"Yes And Building": "<g fill=\"currentColor\"><rect x=\"8\" y=\"27\" width=\"12\" height=\"8\" rx=\"1.5\" fill-opacity=\".8\"/><rect x=\"14\" y=\"19\" width=\"12\" height=\"8\" rx=\"1.5\" fill-opacity=\".5\"/><rect x=\"20\" y=\"11\" width=\"12\" height=\"8\" rx=\"1.5\"/></g>",
"Brain Writing Round Robin": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M31 16 A10 10 0 1 0 32.5 22\"/><path d=\"M31 10 L31.5 16.3 L25 16.5\"/></g>",
"Random Stimulation": "<rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><g fill=\"currentColor\"><circle cx=\"17\" cy=\"17\" r=\"1.8\"/><circle cx=\"27\" cy=\"17\" r=\"1.8\"/><circle cx=\"22\" cy=\"22\" r=\"1.8\"/><circle cx=\"17\" cy=\"27\" r=\"1.8\"/><circle cx=\"27\" cy=\"27\" r=\"1.8\"/></g>",
"Role Playing": "<rect x=\"11\" y=\"9\" width=\"22\" height=\"26\" rx=\"3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"22\" cy=\"19\" r=\"4\" fill=\"currentColor\"/><path d=\"M15.5 30 c2 -4.5 11 -4.5 13 0\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"Ideation Relay Race": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"31\" x2=\"27\" y2=\"16\"/><line x1=\"8\" y1=\"22\" x2=\"14\" y2=\"22\" stroke-opacity=\".5\"/><line x1=\"8\" y1=\"27\" x2=\"13\" y2=\"27\" stroke-opacity=\".35\"/></g><circle cx=\"29\" cy=\"14\" r=\"3.4\" fill=\"currentColor\"/>",
"Idea Hot Potato": "<path d=\"M11 31 Q22 8 33 31\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"2 3.5\" stroke-linecap=\"round\"/><circle cx=\"22\" cy=\"12.5\" r=\"4.2\" fill=\"currentColor\"/>",
"Steal And Upgrade": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 33 V14\"/><path d=\"M13 21 L20 14 L27 21\"/></g><path d=\"M30 27 l1 2.6 2.6 1 -2.6 1 -1 2.6 -1 -2.6 -2.6 -1 2.6 -1 z\" fill=\"currentColor\"/>",
"Fold The Paper": "<path d=\"M13 16 L21 12 V28 L13 32 Z\" fill=\"currentColor\" fill-opacity=\".22\"/><path d=\"M21 12 L29 16 V32 L21 28 Z\" fill=\"currentColor\" fill-opacity=\".45\"/><path d=\"M13 16 L21 12 L29 16 M21 12 V28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\"/>",
"What If Scenarios": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 17 a4 4 0 1 1 4 4 v3\"/></g><circle cx=\"22\" cy=\"30\" r=\"1.6\" fill=\"currentColor\"/>",
"Analogical Thinking": "<circle cx=\"15\" cy=\"22\" r=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><rect x=\"25\" y=\"16\" width=\"12\" height=\"12\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M19 20 q2 2 0 4 M23 20 q-2 2 0 4\" stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\"/>",
"First Principles Thinking": "<g fill=\"currentColor\"><rect x=\"10\" y=\"28\" width=\"8\" height=\"6\" rx=\"1\"/><rect x=\"18.5\" y=\"28\" width=\"8\" height=\"6\" rx=\"1\"/><rect x=\"27\" y=\"28\" width=\"7\" height=\"6\" rx=\"1\"/></g><path d=\"M22 25 L22 11 M16 17 L22 11 L28 17\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
"Forced Relationships": "<circle cx=\"12\" cy=\"22\" r=\"3.4\" fill=\"currentColor\"/><circle cx=\"32\" cy=\"22\" r=\"3.4\" fill=\"currentColor\"/><path d=\"M15 22 q7 -9 14 0\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"1.5 3\"/>",
"Time Shifting": "<circle cx=\"22\" cy=\"22\" r=\"12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 15 V22 L27 25\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"Metaphor Mapping": "<rect x=\"10\" y=\"14\" width=\"14\" height=\"14\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"28\" cy=\"25\" r=\"7\" fill=\"currentColor\" fill-opacity=\".22\"/><circle cx=\"28\" cy=\"25\" r=\"7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/>",
"Cross-Pollination": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 14 H27 a4 4 0 0 1 0 8 H17 a4 4 0 0 0 0 8 H31\"/><path d=\"M28 11 L31.5 14 L28 17 M16 27 L12.5 30 L16 33\"/></g>",
"Concept Blending": "<circle cx=\"18\" cy=\"22\" r=\"8\" fill=\"currentColor\" fill-opacity=\".25\"/><circle cx=\"26\" cy=\"22\" r=\"8\" fill=\"currentColor\" fill-opacity=\".25\"/><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"18\" cy=\"22\" r=\"8\"/><circle cx=\"26\" cy=\"22\" r=\"8\"/></g>",
"Reverse Brainstorming": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 18 H28 a4 4 0 0 1 0 8 H16\"/><path d=\"M19 15 L13 18 L19 21 M22 23 L16 26 L22 29\"/></g>",
"Sensory Exploration": "<path d=\"M10 22 q12 -10 24 0 q-12 10 -24 0 z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/><circle cx=\"22\" cy=\"22\" r=\"4\" fill=\"currentColor\"/>",
"Five Whys": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"14\" cy=\"13\" r=\"2.4\"/><circle cx=\"22\" cy=\"22\" r=\"2.4\"/><circle cx=\"30\" cy=\"31\" r=\"2.4\"/><path d=\"M15.6 14.8 L20.4 20.2 M23.6 23.8 L28.4 29.2\"/></g>",
"Provocation Technique": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M24 9 L13 24 H21 L19 35 L31 19 H23 Z\"/></g>",
"Assumption Reversal": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 14 V30\"/><path d=\"M11.5 25 L16 30 L20.5 25\"/><path d=\"M28 30 V14\"/><path d=\"M23.5 19 L28 14 L32.5 19\"/></g>",
"Question Storming": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 16 a3.2 3.2 0 1 1 3.2 3.2 v2\"/><path d=\"M26 13 a3.6 3.6 0 1 1 3.6 3.6 v2.4\"/></g><circle cx=\"17.2\" cy=\"27\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"29.6\" cy=\"25.6\" r=\"1.6\" fill=\"currentColor\"/>",
"Constraint Mapping": "<path d=\"M11 14 L18 12 L26 14 L33 12 V30 L26 32 L18 30 L11 32 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/><path d=\"M18 12 V30 M26 14 V32\" stroke=\"currentColor\" stroke-width=\"1.6\"/>",
"Failure Analysis": "<circle cx=\"20\" cy=\"20\" r=\"8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><line x1=\"26\" y1=\"26\" x2=\"33\" y2=\"33\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"/><path d=\"M20 16 V21 M20 24 V24\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"Emergent Thinking": "<g fill=\"currentColor\"><circle cx=\"11\" cy=\"31\" r=\"1.6\"/><circle cx=\"17\" cy=\"29\" r=\"1.6\"/><circle cx=\"16\" cy=\"23\" r=\"1.6\"/><circle cx=\"22\" cy=\"24\" r=\"1.8\"/><circle cx=\"23\" cy=\"17\" r=\"1.9\"/><circle cx=\"29\" cy=\"18\" r=\"1.7\"/><circle cx=\"28\" cy=\"12\" r=\"2.1\"/></g>",
"Causal Loop Mapping": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 16 a9 9 0 1 1 -2 12\"/><path d=\"M16 10.5 L16.5 16.5 L10.5 17\"/><path d=\"M30 28.5 L29.5 22.5 L35 22\"/></g>",
"Morphological Analysis": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"2\"/><path d=\"M11 18.3 H33 M11 25.6 H33 M18.3 11 V33 M25.6 11 V33\"/></g><rect x=\"18.5\" y=\"18.5\" width=\"7\" height=\"7\" fill=\"currentColor\" fill-opacity=\".4\"/>",
"Laddering": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 9 V35 M28 9 V35 M16 15 H28 M16 22 H28 M16 29 H28\"/></g>",
"Inner Child Conference": "<circle cx=\"22\" cy=\"16\" r=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 22 V31\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/><path d=\"M19 34 q3 -3 6 0\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/><g fill=\"currentColor\"><circle cx=\"20\" cy=\"15\" r=\"1\"/><circle cx=\"24\" cy=\"15\" r=\"1\"/></g>",
"Shadow Work Mining": "<circle cx=\"22\" cy=\"22\" r=\"12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 10 a12 12 0 0 1 0 24 z\" fill=\"currentColor\" fill-opacity=\".85\"/>",
"Values Archaeology": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M10 16 h24\" stroke-opacity=\".4\"/><path d=\"M10 22 h24\" stroke-opacity=\".6\"/></g><path d=\"M22 24 L16 30 L22 36 L28 30 Z\" fill=\"currentColor\"/>",
"Future Self Interview": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 10 H30 L24 22 L30 34 H14 L20 22 Z\"/></g><path d=\"M18 14 H26\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"Body Wisdom Dialogue": "<path d=\"M22 33 C12 26 9 19 13.5 15 C17 12 21 14 22 17 C23 14 27 12 30.5 15 C35 19 32 26 22 33 Z\" fill=\"currentColor\" fill-opacity=\".22\"/><path d=\"M22 33 C12 26 9 19 13.5 15 C17 12 21 14 22 17 C23 14 27 12 30.5 15 C35 19 32 26 22 33 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/>",
"Permission Giving": "<rect x=\"10\" y=\"14\" width=\"24\" height=\"16\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M15 23 L19 27 L28 17\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
"Secret Wish Confession": "<rect x=\"13\" y=\"20\" width=\"18\" height=\"14\" rx=\"2.5\" fill=\"currentColor\" fill-opacity=\".22\"/><rect x=\"13\" y=\"20\" width=\"18\" height=\"14\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M16.5 20 v-3 a5.5 5.5 0 0 1 11 0 v3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/>",
"Mood Weather Report": "<circle cx=\"17\" cy=\"17\" r=\"4.5\" fill=\"currentColor\" fill-opacity=\".5\"/><path d=\"M22 30 a5 5 0 0 1 0.5 -10 a6 6 0 0 1 11 2.5 a4 4 0 0 1 -1.5 7.5 z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/>",
"SCAMPER Method": "<circle cx=\"22\" cy=\"22\" r=\"5.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><g stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"><path d=\"M22 9 V13.5 M22 30.5 V35 M9 22 H13.5 M30.5 22 H35 M12.8 12.8 L16 16 M28 28 L31.2 31.2 M31.2 12.8 L28 16 M16 28 L12.8 31.2\"/></g>",
"Six Thinking Hats": "<path d=\"M14 26 q8 -5 16 0\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/><path d=\"M17 26 q-6 1 -8 3 q13 4 26 0 q-2 -2 -8 -3\" fill=\"currentColor\" fill-opacity=\".22\"/><path d=\"M17 26 c-1 -8 11 -8 10 0\" fill=\"currentColor\" fill-opacity=\".5\"/>",
"Decision Tree Mapping": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"22\" cy=\"12\" r=\"2.6\"/><circle cx=\"14\" cy=\"32\" r=\"2.6\"/><circle cx=\"30\" cy=\"32\" r=\"2.6\"/><path d=\"M22 14.5 L22 20 M22 20 L14 29.4 M22 20 L30 29.4\"/></g>",
"Solution Matrix": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"2\"/><path d=\"M11 22 H33 M22 11 V33\"/></g><path d=\"M24.5 14.5 L26.5 16.5 L30.5 12.5\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
"Trait Transfer": "<path d=\"M12 16 l1.6 3.4 3.6 .4 -2.7 2.5 .7 3.6 -3.2 -1.8 -3.2 1.8 .7 -3.6 -2.7 -2.5 3.6 -.4 z\" fill=\"currentColor\"/><rect x=\"25\" y=\"23\" width=\"9\" height=\"9\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M17 22 L25 27\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"1.5 2.5\"/>",
"Lotus Blossom": "<g fill=\"currentColor\"><circle cx=\"22\" cy=\"22\" r=\"3.4\"/></g><g fill=\"currentColor\" fill-opacity=\".4\"><circle cx=\"22\" cy=\"13\" r=\"2.8\"/><circle cx=\"22\" cy=\"31\" r=\"2.8\"/><circle cx=\"13\" cy=\"22\" r=\"2.8\"/><circle cx=\"31\" cy=\"22\" r=\"2.8\"/><circle cx=\"15.5\" cy=\"15.5\" r=\"2.5\"/><circle cx=\"28.5\" cy=\"15.5\" r=\"2.5\"/><circle cx=\"15.5\" cy=\"28.5\" r=\"2.5\"/><circle cx=\"28.5\" cy=\"28.5\" r=\"2.5\"/></g>",
"Worst Possible Idea": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17 11 v10 h-5 l10 12 10 -12 h-5 v-10 z\"/></g>",
"Disney Method": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"14\" cy=\"22\" r=\"4.5\"/><circle cx=\"22\" cy=\"22\" r=\"4.5\"/><circle cx=\"30\" cy=\"22\" r=\"4.5\"/></g>",
"Starbursting": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 8 V15 M22 29 V36 M8 22 H15 M29 22 H36 M12 12 L17 17 M27 27 L32 32 M32 12 L27 17 M12 32 L17 27\"/></g><path d=\"M19.5 19 a3.2 3.2 0 1 1 3 4 v1.2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>",
"Mind Mapping": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"22\" cy=\"22\" r=\"4\"/><circle cx=\"11\" cy=\"13\" r=\"2.2\"/><circle cx=\"33\" cy=\"13\" r=\"2.2\"/><circle cx=\"10\" cy=\"28\" r=\"2.2\"/><circle cx=\"32\" cy=\"31\" r=\"2.2\"/><path d=\"M19 19.5 L12.5 14.5 M25 19.5 L31.5 14.5 M19 24.5 L11.5 27 M25.5 24 L30.5 29.5\"/></g>",
"Crazy 8s": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\"><rect x=\"9\" y=\"12\" width=\"8\" height=\"9\" rx=\"1.5\"/><rect x=\"18\" y=\"12\" width=\"8\" height=\"9\" rx=\"1.5\"/><rect x=\"27\" y=\"12\" width=\"8\" height=\"9\" rx=\"1.5\"/><rect x=\"9\" y=\"23\" width=\"8\" height=\"9\" rx=\"1.5\"/><rect x=\"18\" y=\"23\" width=\"8\" height=\"9\" rx=\"1.5\"/><rect x=\"27\" y=\"23\" width=\"8\" height=\"9\" rx=\"1.5\"/></g>",
"Time Travel Talk Show": "<rect x=\"18\" y=\"9\" width=\"8\" height=\"15\" rx=\"4\" fill=\"currentColor\" fill-opacity=\".25\"/><rect x=\"18\" y=\"9\" width=\"8\" height=\"15\" rx=\"4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M14 21 a8 8 0 0 0 16 0 M22 29 V34 M17 34 H27\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"Alien Anthropologist": "<ellipse cx=\"22\" cy=\"30\" rx=\"13\" ry=\"4.5\" fill=\"currentColor\" fill-opacity=\".25\"/><path d=\"M22 11 c7 0 10 6 10 11 c0 5 -5 7 -10 7 c-5 0 -10 -2 -10 -7 c0 -5 3 -11 10 -11 z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><g fill=\"currentColor\"><ellipse cx=\"18\" cy=\"22\" rx=\"1.6\" ry=\"2.4\"/><ellipse cx=\"26\" cy=\"22\" rx=\"1.6\" ry=\"2.4\"/></g>",
"Dream Fusion Laboratory": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 9 H26 M19.5 9 V18 L13 30 a2 2 0 0 0 2 3 H29 a2 2 0 0 0 2 -3 L24.5 18 V9\"/></g><path d=\"M16.5 26 H27.5\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"20\" cy=\"29\" r=\"1.4\" fill=\"currentColor\"/><circle cx=\"25\" cy=\"28\" r=\"1.1\" fill=\"currentColor\"/>",
"Emotion Orchestra": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M17 30 V15 L31 12 V27\"/><circle cx=\"14\" cy=\"30\" r=\"3\"/><circle cx=\"28\" cy=\"27\" r=\"3\"/></g>",
"Parallel Universe Cafe": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"18\" cy=\"22\" r=\"9\"/><circle cx=\"26\" cy=\"22\" r=\"9\" stroke-dasharray=\"2.5 2.5\"/></g>",
"Persona Journey": "<path d=\"M14 33 q-2 -8 6 -9 q8 -1 6 -8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"0.1 4\"/><circle cx=\"14\" cy=\"33\" r=\"2.4\" fill=\"currentColor\"/><path d=\"M26 16 l3 -5 3 5 z\" fill=\"currentColor\"/>",
"Devil's Advocate Courtroom": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 10 V32 M14 32 H30\"/><path d=\"M11 16 H33 M11 16 L8 23 H14 Z M33 16 L30 23 H36 Z\"/></g>",
"Chaos Engineering": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 9 L25 18 L34 18 L27 24 L30 33 L22 27 L14 33 L17 24 L10 18 L19 18 Z\"/></g>",
"Guerrilla Gardening Ideas": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 33 V21\"/><path d=\"M22 22 c-7 0 -9 -6 -9 -9 c6 0 9 3 9 9 z\"/><path d=\"M22 24 c6 0 8 -4 8 -7 c-5 0 -8 2 -8 7 z\"/></g>",
"Pirate Code Brainstorm": "<path d=\"M22 10 c-7 0 -11 5 -11 11 c0 4 2 6 4 7 v4 h3 v-2 h2 v2 h4 v-2 h2 v2 h3 v-4 c2 -1 4 -3 4 -7 c0 -6 -4 -11 -11 -11 z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/><g fill=\"currentColor\"><circle cx=\"17.5\" cy=\"21\" r=\"2.2\"/><circle cx=\"26.5\" cy=\"21\" r=\"2.2\"/></g>",
"Zombie Apocalypse Planning": "<circle cx=\"22\" cy=\"22\" r=\"4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 10 a12 12 0 0 1 6 3.5 M32 16 a12 12 0 0 1 0 12 M28 33.5 a12 12 0 0 1 -12 0 M12 28 a12 12 0 0 1 0 -12 M16 10.5 a12 12 0 0 1 6 -0.5\" stroke-dasharray=\"0.1 5.5\"/></g><g fill=\"currentColor\"><circle cx=\"22\" cy=\"11\" r=\"2\"/><circle cx=\"11\" cy=\"22\" r=\"2\"/><circle cx=\"33\" cy=\"22\" r=\"2\"/></g>",
"Drunk History Retelling": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 12 H31 L25 23 V31 H19 V23 Z\"/><path d=\"M19 31 H25\" /></g><circle cx=\"29\" cy=\"14\" r=\"1.4\" fill=\"currentColor\"/>",
"Anti-Solution": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 18 a8 8 0 1 1 -1 8\"/><path d=\"M14 12 L14 18.5 L20 18\"/></g>",
"Elemental Forces": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 8 L30 22 H14 Z\"/><path d=\"M14 30 L22 36 L30 30\"/><path d=\"M14 26 H30\"/></g>",
"Nature's Solutions": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 32 C12 24 12 20 16 12 M28 32 C32 24 32 20 28 12\"/><path d=\"M16 16 L28 14 M16 22 L28 20 M16 28 L28 26\"/></g>",
"Ecosystem Thinking": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"22\" cy=\"13\" r=\"2.4\"/><circle cx=\"12\" cy=\"27\" r=\"2.4\"/><circle cx=\"32\" cy=\"27\" r=\"2.4\"/><circle cx=\"22\" cy=\"24\" r=\"2.4\"/><path d=\"M22 15.4 V21.6 M14 26 L20 24.5 M30 26 L24 24.5 M13.6 25.2 L30.4 25.2\"/></g>",
"Evolutionary Pressure": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 31 H17 M19 31 a6 6 0 0 1 6 -6 M25 25 a5 5 0 0 1 5 -5 M30 20 H33\"/><circle cx=\"11\" cy=\"31\" r=\"2\" fill=\"currentColor\"/><circle cx=\"33\" cy=\"20\" r=\"2.6\" fill=\"currentColor\"/></g>",
"Predator & Prey": "<path d=\"M22 9 L33 14 V23 C33 30 28 34 22 36 C16 34 11 30 11 23 V14 Z\" fill=\"currentColor\" fill-opacity=\".18\"/><path d=\"M22 9 L33 14 V23 C33 30 28 34 22 36 C16 34 11 30 11 23 V14 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/>",
"Metamorphosis Stages": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 12 V32\"/><path d=\"M22 16 C14 12 10 18 14 22 C10 26 14 32 22 28 C30 32 34 26 30 22 C34 18 30 12 22 16\"/></g>",
"Swarm Logic": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 10 L29 14 V22 L22 26 L15 22 V14 Z\"/><path d=\"M15 24 L18 33 M29 24 L26 33 M22 28 V35\" stroke-opacity=\".6\"/></g>",
"Observer Effect": "<path d=\"M9 22 q13 -10 26 0 q-13 10 -26 0 z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/><circle cx=\"22\" cy=\"22\" r=\"4.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"22\" cy=\"22\" r=\"1.8\" fill=\"currentColor\"/>",
"Entanglement Thinking": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"15\" cy=\"22\" r=\"6\"/><circle cx=\"29\" cy=\"22\" r=\"6\"/></g><path d=\"M15 22 h14\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"1.5 2.5\"/><g fill=\"currentColor\"><circle cx=\"15\" cy=\"22\" r=\"1.8\"/><circle cx=\"29\" cy=\"22\" r=\"1.8\"/></g>",
"Superposition Collapse": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 12 C20 16 24 16 33 12 M11 18 C20 22 24 22 33 18 M11 24 C20 28 24 28 33 24\"/><path d=\"M22 26 V34\"/></g><circle cx=\"22\" cy=\"34\" r=\"2\" fill=\"currentColor\"/>",
"Relativity Frame Shift": "<rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-opacity=\".4\"/><rect x=\"15\" y=\"15\" width=\"18\" height=\"18\" rx=\"2\" transform=\"rotate(-14 22 22)\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/>",
"Field Lines": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 13 V31 M16 13 C24 18 24 26 16 31 M22 13 C32 18 32 26 22 31\"/></g><circle cx=\"11\" cy=\"22\" r=\"2\" fill=\"currentColor\"/>",
"Quantum Tunneling": "<rect x=\"20\" y=\"9\" width=\"5\" height=\"26\" rx=\"1.5\" fill=\"currentColor\" fill-opacity=\".3\"/><path d=\"M10 22 H34\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"/><path d=\"M28 17 L34 22 L28 27\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
"Indigenous Wisdom": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M26 11 C18 16 14 24 13 33 M26 11 C28 18 26 25 20 29\"/><path d=\"M26 11 C24 13 22 14 19 15 M24 16 C22 18 20 19 17 20 M22 21 C20 23 18 24 15 25\"/></g>",
"Fusion Cuisine": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 19 a12 7 0 0 0 24 0 Z\"/><path d=\"M22 19 V32 M16 32 H28\"/></g>",
"Ritual Innovation": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 33 V17 a10 10 0 0 1 20 0 V33\"/><path d=\"M12 33 H32 M22 33 V21\"/></g>",
"Mythic Frameworks": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 12 h13 a3 3 0 0 1 3 3 v17 l-3 -2 -3 2 -3 -2 -3 2 V15 a3 3 0 0 0 -3 -3 z\"/><path d=\"M14 12 a3 3 0 0 0 -3 3 h6\"/><path d=\"M20 18 H26 M20 23 H26\"/></g>",
"Proverb Mining": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 14 C17 10 11 11 11 11 V30 s6 -1 11 3 c5 -4 11 -3 11 -3 V11 s-6 -1 -11 3 z\"/><path d=\"M22 14 V31\"/></g>",
"Ancestor Council": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"22\" cy=\"14\" r=\"3.5\"/><circle cx=\"13\" cy=\"19\" r=\"3\"/><circle cx=\"31\" cy=\"19\" r=\"3\"/></g><g fill=\"currentColor\" fill-opacity=\".25\"><path d=\"M16 31 c0 -5 12 -5 12 0 z\"/><path d=\"M8 31 c0 -4 9 -4.5 9 0 z\"/><path d=\"M27 31 c0 -4.5 9 -4 9 0 z\"/></g>",
"Trickster's Gambit": "<rect x=\"11\" y=\"12\" width=\"13\" height=\"18\" rx=\"2\" transform=\"rotate(-10 17.5 21)\" fill=\"currentColor\" fill-opacity=\".2\" stroke=\"currentColor\" stroke-width=\"2\"/><rect x=\"20\" y=\"14\" width=\"13\" height=\"18\" rx=\"2\" transform=\"rotate(10 26.5 23)\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M26.5 19 l1.4 3 1.4 -3 -1.4 -1 z\" fill=\"currentColor\"/>",
"Villain's Monologue": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 20 C16 18 19 18 22 21 C25 18 28 18 32 20 C30 24 26 24 22 21 C18 24 14 24 12 20 Z\"/></g><circle cx=\"22\" cy=\"14\" r=\"2.4\" fill=\"currentColor\"/>",
"Explain It to a Golden Retriever": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 18 C12 12 17 13 18 17 M30 18 C32 12 27 13 26 17\"/><path d=\"M15 19 C13 28 18 33 22 33 C26 33 31 28 29 19 C26 16 18 16 15 19 Z\"/></g><g fill=\"currentColor\"><circle cx=\"19\" cy=\"24\" r=\"1.4\"/><circle cx=\"25\" cy=\"24\" r=\"1.4\"/><circle cx=\"22\" cy=\"28\" r=\"1.6\"/></g>",
"Infomercial at 3AM": "<rect x=\"9\" y=\"14\" width=\"26\" height=\"18\" rx=\"2.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M18 9 L22 14 L26 9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M22 19 l1 2.6 2.8 .2 -2.1 1.9 .7 2.7 -2.4 -1.5 -2.4 1.5 .7 -2.7 -2.1 -1.9 2.8 -.2 z\" fill=\"currentColor\"/>",
"Drunk Uncle at Thanksgiving": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 16 L20 16 L27 11 V29 L20 24 L11 24 Z\"/><path d=\"M30 16 q3 4 0 8 M33 13 q5 7 0 14\"/></g>",
"Cursed Genie": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10 30 h18 a2 2 0 0 0 2 -2 c0 -5 -6 -5 -8 -8 c5 -1 8 -3 8 -3 c-4 -2 -12 -2 -16 1 c-4 3 -5 9 -4 12 z\"/><path d=\"M30 17 L33 14 M31 21 L35 20\" stroke-opacity=\".6\"/></g>",
"Three Rounds of Stupid": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 30 V20 M9 24 L13 20 L17 24 M22 30 V15 M18 19 L22 15 L26 19 M31 30 V11 M27 15 L31 11 L35 15\"/></g>",
"Kill the Crown Jewel": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 28 L13 15 L19 22 L22 12 L25 22 L31 15 L33 28 Z\"/><path d=\"M11 28 H33\"/></g><path d=\"M14 12 L30 32\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\"/>",
"1000x Budget": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><ellipse cx=\"22\" cy=\"14\" rx=\"9\" ry=\"3.5\"/><path d=\"M13 14 V22 a9 3.5 0 0 0 18 0 V14\"/><path d=\"M13 22 V30 a9 3.5 0 0 0 18 0 V22\"/></g>",
"Ship in 60 Minutes": "<circle cx=\"22\" cy=\"24\" r=\"11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 24 V17 M22 24 L27 27\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/><path d=\"M18 8 H26 M22 8 V13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>",
"The $0 Mandate": "<circle cx=\"22\" cy=\"22\" r=\"11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 14 V30 M18 18 a4 3 0 0 1 8 0 a4 3 0 0 1 -8 4 a4 3 0 0 0 8 0\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/><path d=\"M14 30 L30 14\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"/>",
"One Feature Only": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"22\" cy=\"22\" r=\"4.5\"/><path d=\"M22 9 V13 M22 31 V35 M9 22 H13 M31 22 H35\" stroke-opacity=\".35\"/></g><circle cx=\"22\" cy=\"22\" r=\"2\" fill=\"currentColor\"/>",
"Crank the Dial to 11": "<path d=\"M11 28 A12 12 0 0 1 33 28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/><path d=\"M22 28 L31 17\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"/><circle cx=\"22\" cy=\"28\" r=\"2.6\" fill=\"currentColor\"/>",
"Constraint Roulette": "<circle cx=\"22\" cy=\"22\" r=\"12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><circle cx=\"22\" cy=\"22\" r=\"12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"3 3.7\" stroke-opacity=\".5\"/><circle cx=\"22\" cy=\"22\" r=\"3\" fill=\"currentColor\"/><path d=\"M22 7 L25 12 H19 Z\" fill=\"currentColor\"/>",
"Time Horizon Ladder": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 30 H35\"/><path d=\"M14 30 V24 M22 30 V18 M30 30 V12\"/></g><g fill=\"currentColor\"><circle cx=\"14\" cy=\"24\" r=\"2\"/><circle cx=\"22\" cy=\"18\" r=\"2\"/><circle cx=\"30\" cy=\"12\" r=\"2\"/></g>",
"Post-Scarcity Test": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M15 22 a4.5 4.5 0 1 1 4.5 4.5 C16 26.5 14 18 11 18 a3.5 3.5 0 0 0 0 7 c4 0 5 -8 11 -8 a4.5 4.5 0 0 1 0 9 c-3 0 -4 -4.5 -7 -4.5\"/></g>",
"Utopia vs Dystopia Split-Screen": "<rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 11 V33\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 11 H33 a0 0 0 0 1 0 0 V33 H22 Z\" fill=\"currentColor\" fill-opacity=\".8\"/>",
"Sci-Fi Artifact From the Future": "<path d=\"M22 9 L33 15 V28 L22 35 L11 28 V15 Z\" fill=\"currentColor\" fill-opacity=\".15\"/><path d=\"M22 9 L33 15 V28 L22 35 L11 28 V15 Z M11 15 L22 21 L33 15 M22 21 V35\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"/>",
"Emerging Tech Collision": "<rect x=\"15\" y=\"15\" width=\"14\" height=\"14\" rx=\"2\" fill=\"currentColor\" fill-opacity=\".22\"/><rect x=\"15\" y=\"15\" width=\"14\" height=\"14\" rx=\"2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"/><g stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M19 15 V10 M25 15 V10 M19 29 V34 M25 29 V34 M15 19 H10 M15 25 H10 M29 19 H34 M29 25 H34\"/></g>",
"What-If-The-World-Changed Card Flip": "<rect x=\"13\" y=\"10\" width=\"18\" height=\"24\" rx=\"2.5\" fill=\"currentColor\" fill-opacity=\".18\" stroke=\"currentColor\" stroke-width=\"2\"/><path d=\"M22 10 V34\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-dasharray=\"2 2.5\"/><path d=\"M27 16 a4 4 0 1 1 4 4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/>",
"Future Anthropologist Dig": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 27 a6 6 0 1 1 0.1 0 z\"/><path d=\"M22 23 a2.5 2.5 0 1 0 0.1 0 M19 30 a5 5 0 0 0 6 0\"/></g><path d=\"M12 16 L17 13 M32 16 L27 13\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-opacity=\".5\"/>",
"How Might We": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M11 13 H33 a2 2 0 0 1 2 2 V27 a2 2 0 0 1 -2 2 H24 L19 34 V29 H11 a2 2 0 0 1 -2 -2 V15 a2 2 0 0 1 2 -2 Z\"/></g><path d=\"M19 19 a3.2 3.2 0 1 1 3.4 3.4 v1.6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"/><circle cx=\"22.4\" cy=\"27\" r=\"1.4\" fill=\"currentColor\"/>",
"Job to Be Done": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"><rect x=\"9\" y=\"16\" width=\"26\" height=\"16\" rx=\"2.5\"/><path d=\"M17 16 v-3 a2 2 0 0 1 2 -2 h6 a2 2 0 0 1 2 2 v3\"/><path d=\"M9 23 H35\"/></g><circle cx=\"22\" cy=\"23\" r=\"1.8\" fill=\"currentColor\"/>",
"Empathy Map": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"11\" y=\"11\" width=\"22\" height=\"22\" rx=\"2\"/><path d=\"M11 22 H33 M22 11 V33\"/></g><path d=\"M22 27 c-2.6 -2.1 -4.2 -3.4 -4.2 -5.2 a2.1 2.1 0 0 1 4.2 -1 a2.1 2.1 0 0 1 4.2 1 c0 1.8 -1.6 3.1 -4.2 5.2 z\" fill=\"currentColor\"/>",
"Backcasting": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M30 11 V33\"/></g><path d=\"M30 13 L20 16.5 L30 20 Z\" fill=\"currentColor\"/><path d=\"M28 27 H14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-dasharray=\"1.5 3\"/><path d=\"M18 23 L14 27 L18 31\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>",
"Scenario Cross": "<g stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M22 9 V35 M9 22 H35\"/></g><g fill=\"currentColor\"><circle cx=\"15\" cy=\"15\" r=\"2\"/><circle cx=\"29\" cy=\"15\" r=\"2\"/><circle cx=\"15\" cy=\"29\" r=\"2\"/><circle cx=\"29\" cy=\"29\" r=\"2\"/></g>",
"TRIZ Contradiction": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 15 H18 M14.5 11.5 L18 15 L14.5 18.5\"/><path d=\"M35 29 H26 M29.5 25.5 L26 29 L29.5 32.5\"/></g><path d=\"M22 17.5 l1.5 3.4 3.7 .3 -2.8 2.4 .9 3.6 -3.3 -1.9 -3.3 1.9 .9 -3.6 -2.8 -2.4 3.7 -.3 z\" fill=\"currentColor\"/>",
"Fishbone Diagram": "<g fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 22 H33\"/><path d=\"M33 22 L36 18.5 M33 22 L36 25.5\"/><path d=\"M14 22 L18 15 M14 22 L18 29 M23 22 L27 15 M23 22 L27 29\"/></g><circle cx=\"9\" cy=\"22\" r=\"1.9\" fill=\"currentColor\"/>",
"Build on What Works": "<g fill=\"currentColor\"><rect x=\"11\" y=\"24\" width=\"6\" height=\"9\" rx=\"1\"/><rect x=\"19\" y=\"19\" width=\"6\" height=\"14\" rx=\"1\"/><rect x=\"27\" y=\"13\" width=\"6\" height=\"20\" rx=\"1\"/></g><path d=\"M11 19 L18 13 L24 16 L33 8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M28 8 H33 V13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>"
}
}
assets/brain-methods.csv
category,technique_name,description,detail,provenance,good_for,audience
collaborative,Yes And Building,"Never negate; each person opens with ""Yes, and..."" and adds to the last idea, stacking a chain of accepted additions",,classic,novel|unstuck|planning,group
collaborative,Brain Writing Round Robin,"Everyone writes ideas silently, then passes their sheet; you build on whatever lands in front of you, round after round",,classic,novel|feature,group
collaborative,Random Stimulation,"Pull a random word or image and force a link to the problem: ""how does THIS spark a solution?""",,classic,unstuck|novel,either
collaborative,Role Playing,"Each person speaks as a different stakeholder, voicing what that role wants, fears, and would demand of the idea",,classic,strategy|personal|feature,either
collaborative,Ideation Relay Race,"30-second turns, no pausing: add one idea, slap it to the next person, keep the baton moving before anyone overthinks",,playful,unstuck,group
collaborative,Idea Hot Potato,"One idea gets tossed around the circle; each catcher must mutate it in 10 seconds before passing, no repeats allowed",,playful,unstuck,group
collaborative,Steal And Upgrade,"Pick a neighbor's idea you envy, claim it out loud, then make it visibly better before handing it back improved",,signature,novel|unstuck,group
collaborative,Fold The Paper,"Each person adds one line to a hidden drawing or sentence, sees only the previous fragment, then unfold the surreal whole",,playful,unstuck|novel,group
creative,What If Scenarios,"Detonate one constraint at a time — unlimited budget, opposite is true, problem vanished — and chase what rushes in",,signature,novel|strategy|unstuck,either
creative,Analogical Thinking,Ask 'this is like what?' and steal the solution pattern from the domain that answers,,signature,feature|novel|diagnosis,either
creative,First Principles Thinking,"Strip every assumption to bedrock facts, then rebuild the solution from scratch on truth alone",,classic,feature|novel|diagnosis|strategy,either
creative,Forced Relationships,Grab two unrelated things at random and force a bridge between them until an idea falls out,,signature,novel|unstuck,either
creative,Time Shifting,"Solve the problem as a 1900s artisan, then a 2150 colonist — harvest the era-bound constraints and tricks",,signature,novel|unstuck,either
creative,Metaphor Mapping,"Declare the problem IS a chosen metaphor, extend the metaphor fully, map each part back to find insights",,signature,novel|diagnosis,either
creative,Cross-Pollination,"Ask how a wildly different industry — casinos, ERs, beekeeping — would crack this, then adapt their move",,signature,novel|feature|strategy,either
creative,Concept Blending,"Fuse two concepts into one new hybrid category and name what the merger becomes, not just combines",,signature,novel,either
creative,Reverse Brainstorming,Generate problems instead of solutions — 'how could we make this fail?' — then mine each for its inverse,,classic,diagnosis|feature|unstuck,either
creative,Sensory Exploration,"Interrogate the idea through each sense — its taste, smell, sound, texture — to surface non-analytical angles",,signature,novel|unstuck,either
deep,Five Whys,"Ask ""why?"" five times in a chain, each answer feeding the next, until you hit the root cause beneath the symptom",,classic,diagnosis,either
deep,Provocation Technique,"State something deliberately absurd, then mine it: ""how could this be useful?"" Extract the usable principle hiding inside",,classic,unstuck|novel,either
deep,Assumption Reversal,"List every assumption baked into the problem, flip each to its opposite, then rebuild a solution on the inverted foundation",,classic,novel|diagnosis|strategy,either
deep,Question Storming,"Generate only questions about the problem, zero answers allowed, until the real problem worth solving comes into focus",,classic,diagnosis|strategy|unstuck,either
deep,Constraint Mapping,"Map every constraint, sort real from imagined, then attack each: dissolve it, route around it, or turn it into an asset",,signature,feature|strategy|diagnosis,either
deep,Failure Analysis,"Dissect a relevant failure: what broke, why it broke, what lesson it leaves, and how to apply that wisdom here",,signature,diagnosis|strategy|feature,either
deep,Emergent Thinking,Stop forcing a solution; watch what patterns the system keeps producing and name what's trying to emerge on its own,,signature,strategy|novel,either
deep,Causal Loop Mapping,"Diagram the feedback loops linking causes and effects, find the reinforcing and balancing cycles, and target the leverage point",,classic,diagnosis|strategy,either
deep,Morphological Analysis,"List the problem's independent parameters, generate options for each, then combine across them to surface untried configurations",,classic,feature|novel|planning,either
deep,Laddering,"Ask 'and what would that give you?' up the chain until you reach the real underlying need, then ideate fresh at that level",,classic,personal|strategy|diagnosis,either
introspective_delight,Inner Child Conference,"Answer as your 7-year-old self: ask naive 'why why why' questions, chase wonder, ban every boring adult thought",,signature,personal|unstuck,solo
introspective_delight,Shadow Work Mining,"Name what you're avoiding, resisting, or scared of about this — then dig there for the buried insight",,signature,personal|diagnosis,solo
introspective_delight,Values Archaeology,Keep asking 'why do I care?' until you hit bedrock: the non-negotiable value secretly steering the choice,,signature,personal|strategy,solo
introspective_delight,Future Self Interview,Interview your wise 80-year-old self about this problem and write down the advice they give you,,signature,personal,solo
introspective_delight,Body Wisdom Dialogue,"Scan for the tension, flutter, or gut pull each option triggers; let the body's yes/no drive the ideas",,signature,personal,solo
introspective_delight,Permission Giving,"Write yourself an explicit permission slip to think the forbidden, impossible thought — then think it out loud",,signature,personal|unstuck,solo
introspective_delight,Secret Wish Confession,"Whisper the embarrassing thing you secretly want here but won't admit, then build the idea honoring it",,signature,personal,solo
introspective_delight,Mood Weather Report,"Name the inner weather right now (fog, storm, sun) and let that exact emotional climate generate the ideas",,signature,personal|unstuck,solo
structured,SCAMPER Method,"Run your idea through seven lenses: Substitute, Combine, Adapt, Modify, Put-to-other-use, Eliminate, Reverse",,classic,feature|novel,either
structured,Six Thinking Hats,"Examine the problem six ways one at a time: facts, feelings, benefits, risks, new ideas, process",,classic,strategy|diagnosis|planning|personal,either
structured,Decision Tree Mapping,"Chart every choice point and the paths it forks into, following each branch to its outcome and risk",,signature,planning|strategy|diagnosis,either
structured,Solution Matrix,"Grid problem variables against solution approaches, score every cell, hunt the best pairings and empty gaps",,signature,feature|planning,either
structured,Trait Transfer,"Name what makes an unrelated success work, then graft those winning traits onto your own problem",,signature,novel|feature,either
structured,Lotus Blossom,"Put the theme at the center of a 3x3 grid, fill the 8 cells around it, then promote each of those to the center of its own new 3x3",,classic,feature|planning|novel,either
structured,Worst Possible Idea,"Deliberately generate the most terrible solutions you can, then flip each into what it teaches you to do right",,classic,unstuck|novel,either
structured,Disney Method,"Cycle the idea through three rooms: Dreamer (anything goes), Realist (how we'd build it), Critic (what breaks)",,classic,feature|strategy|planning,either
structured,Starbursting,"Interrogate the idea with only questions — who, what, where, when, why, how — exhaust each before answering any",,classic,feature|planning|diagnosis,either
structured,Mind Mapping,"Branch the central topic outward, each node spawning children; follow tangents wherever they pull and let the web sprawl",,classic,planning|novel|feature,either
structured,Crazy 8s,"Eight ideas in eight minutes, one per box, no editing — speed outruns your inner critic",,classic,feature|novel|unstuck,either
theatrical,Time Travel Talk Show,"Host a talk show interviewing your past, present, and future selves to mine each era for advice on the problem",,playful,novel|personal,either
theatrical,Alien Anthropologist,"Become a baffled alien studying the problem and narrate aloud what seems strange, arbitrary, or insane about it",,playful,diagnosis|unstuck|strategy,either
theatrical,Dream Fusion Laboratory,"Voice the impossible fantasy solution first, then reverse-engineer the bridging steps back to reality",,signature,novel|unstuck,either
theatrical,Emotion Orchestra,"Run a separate ideation round led by each emotion (rage, joy, fear, hope), then harmonize their conflicting ideas",,playful,personal|strategy,either
theatrical,Parallel Universe Cafe,"Rewrite one fundamental rule of reality (physics, economics, social norms) and solve the problem under those laws",,playful,novel|unstuck,either
theatrical,Persona Journey,"Embody an archetype and solve the problem in-character, naming what that persona sees that you normally miss",,signature,feature|strategy,either
theatrical,Devil's Advocate Courtroom,"Stage a trial: prosecute the idea, defend it, then deliver the jury verdict, each role argued fully in character",,signature,strategy|diagnosis,group
wild,Chaos Engineering,"Deliberately break your idea every way it could fail, then rebuild only the parts that survive the wreckage",,signature,feature|diagnosis|strategy,either
wild,Guerrilla Gardening Ideas,Plant your solution in the least expected place and let it grow underground until it surprises everyone,,playful,strategy|unstuck,either
wild,Pirate Code Brainstorm,"Steal the best bits from anywhere, remix without asking permission, grab what works and run",,playful,novel|unstuck,either
wild,Zombie Apocalypse Planning,"Society just collapsed — strip your idea to only what survives with no power, no rules, no backup",,playful,feature|strategy|unstuck,either
wild,Drunk History Retelling,"Explain it like you're three drinks in: no filter, no jargon, just the raw stupid-simple truth",,playful,unstuck|diagnosis,either
wild,Anti-Solution,"Brainstorm how to make the problem spectacularly worse, then invert every sabotage into a fix",,signature,diagnosis|unstuck,either
wild,Elemental Forces,"Let fire, water, earth, and air each sculpt your idea their own brutal way and see what survives",,playful,novel|unstuck,either
biomimetic,Nature's Solutions,"Name an organism that already solved your problem, then copy its mechanism into your design",,signature,feature|novel,either
biomimetic,Ecosystem Thinking,"Map your problem as an ecosystem: who eats whom, who partners, what decays, what fills the gaps",,signature,strategy|diagnosis,either
biomimetic,Evolutionary Pressure,"Spawn many ugly variants, apply a brutal selection rule, breed the survivors, repeat until it adapts",,signature,feature|novel,either
biomimetic,Predator & Prey,"Pick a threat to your idea, then design the defense, camouflage, or escape an animal would evolve against it",,signature,strategy|feature,either
biomimetic,Metamorphosis Stages,"Force your idea through egg, larva, pupa, adult: a radically different form and purpose at each life stage",,signature,novel|strategy,either
biomimetic,Swarm Logic,Forbid the master plan: solve it with dumb local rules each agent follows so order emerges from the bottom up,,signature,feature|strategy,either
quantum,Observer Effect,"Ask how the act of watching, measuring, or shipping this idea changes the very thing you're trying to capture",,signature,strategy|diagnosis,either
quantum,Entanglement Thinking,Pair two distant parts of the problem and insist a change in one instantly flips the other — surface the hidden linkage,,signature,diagnosis|strategy,either
quantum,Superposition Collapse,"Hold all rival solutions alive at once, then name the one constraint that collapses them to a single winner",,signature,strategy|diagnosis,either
quantum,Relativity Frame Shift,"Re-run the idea from a wildly different observer's reference frame — the slow user, the rival, future-you — and see what warps",,signature,strategy|novel,either
quantum,Field Lines,Treat the goal as a charge and map the invisible forces pulling every stakeholder toward or away from it,,signature,strategy,either
quantum,Quantum Tunneling,"Assume the idea can pass straight through the 'impossible' barrier instead of over it — what's on the other side, reached cheaply",,signature,unstuck|novel,either
cultural,Indigenous Wisdom,"Ask how an indigenous or traditional knowledge system would approach this — name the culture, channel its ancestral problem-solving",,signature,personal|strategy|novel,either
cultural,Fusion Cuisine,Pick two unrelated cultures and force-blend their approaches; harvest the hybrid that neither alone would invent,,signature,novel,either
cultural,Ritual Innovation,"Redesign the idea as a ceremony — define the threshold, the gestures, the transformation participants undergo",,signature,novel|personal,either
cultural,Mythic Frameworks,"Map the problem onto a myth: name the archetypes, find the parallel tale, let its structure dictate the resolution",,signature,strategy|personal|novel,either
cultural,Proverb Mining,"Collect proverbs from many cultures on this theme, then build the solution from the one that clashes hardest with your assumptions",,signature,personal|strategy,either
cultural,Ancestor Council,"Convene three ancestors or elders from different traditions, voice each one's verdict on your idea, reconcile their disagreement",,signature,personal|strategy,either
cultural,Trickster's Gambit,"Channel the trickster figure — coyote, Anansi, Loki — and solve it by cheating, inverting, or breaking the sacred rule",,playful,unstuck|strategy,either
absurdist,Villain's Monologue,Pitch your problem as an evil mastermind gloating about their scheme; the diabolical plan reveals the real solution,,playful,diagnosis|strategy|unstuck,either
absurdist,Explain It to a Golden Retriever,"Re-pitch the idea to an excitable dog who only cares about treats, balls, and naps; keep only what survives",,playful,unstuck|diagnosis|feature,either
absurdist,Infomercial at 3AM,"Sell your half-baked idea as a desperate late-night infomercial: 'But wait, there's more!' until features fall out",,playful,strategy|novel,either
absurdist,Drunk Uncle at Thanksgiving,"Have your loudest, least-filtered relative rant about the problem; mine the unhinged hot takes for buried truth",,playful,unstuck|diagnosis,either
absurdist,Cursed Genie,"Make a wish, then let a malicious genie grant it in the most technically-correct disastrous way; patch each loophole",,playful,diagnosis|feature,either
absurdist,Three Rounds of Stupid,"Round 1 absurd ideas, Round 2 make each MORE absurd, Round 3 find the smallest serious thing hiding in the silliest",,playful,unstuck|novel,either
constraint,Kill the Crown Jewel,"Delete the single best, most beloved feature — now redesign the whole thing to win without it",,signature,feature|strategy|unstuck,either
constraint,1000x Budget,"Pretend money, time, and people are infinite — design the absurd version, then mine it for ideas you can actually steal",,signature,novel|strategy,either
constraint,Ship in 60 Minutes,"You launch in one hour with what's already on hand — name what you cut, fake, or borrow to make it real",,signature,feature|planning|unstuck,either
constraint,The $0 Mandate,"Achieve the goal spending literally nothing — no tools, hires, or ads; only people, favors, and what you own",,signature,planning|strategy|feature,either
constraint,One Feature Only,"You may keep exactly ONE capability and nothing else — pick it, then make that single thing unbelievably good",,signature,feature|strategy,either
constraint,Crank the Dial to 11,"Pick one dimension and exaggerate it to a ludicrous extreme — fastest, biggest, cheapest, weirdest — and see what breaks open",,signature,novel|unstuck,either
constraint,Constraint Roulette,"Each round draw a brutal random limit (no screens, half the team, one day) and re-solve under it; survivors become real ideas",,signature,unstuck|feature,either
speculative_future,Time Horizon Ladder,"Solve the idea for 1 year out, then 10, then 100 — note what survives, breaks, or becomes absurd at each rung",,signature,strategy|planning|novel,either
speculative_future,Post-Scarcity Test,"Assume the core constraint (money, energy, time, attention) is now infinite and free — what does the idea become",,signature,novel|strategy,either
speculative_future,Utopia vs Dystopia Split-Screen,Write the same future twice: the brochure where it went perfectly and the headline where it went horribly,,signature,strategy|diagnosis,either
speculative_future,Sci-Fi Artifact From the Future,"Describe one physical object, ad, or news clip from the world where this idea already won — reverse-engineer it",,signature,novel|feature,either
speculative_future,Emerging Tech Collision,"Force-marry your idea to a frontier tech (AGI, fusion, neural implants, gene edit) and ask what new thing is born",,signature,novel|feature|strategy,either
speculative_future,What-If-The-World-Changed Card Flip,"Draw a wild world-shift (no privacy, half population, 200-yr lifespans) and redesign the idea to fit that world",,signature,novel|unstuck,either
speculative_future,Future Anthropologist Dig,"A scholar in 2200 unearths your idea as a relic — what do they conclude it reveals about us, and what replaced it",,signature,strategy|novel,either
structured,How Might We,"Reframe the problem as a batch of 'How might we...' opportunity questions first, then ideate against the sharpest one",,classic,feature|novel|strategy|diagnosis,either
structured,Job to Be Done,"Ask what the user is really hiring this to do, then ideate around that underlying job, not the feature you assumed",,classic,feature|strategy|novel,either
structured,Empathy Map,"Map what the user says, thinks, does, and feels around the problem, then mine each quadrant for the unmet need",,classic,feature|personal,either
structured,Backcasting,"Fix the finished future in vivid detail, then work backward step by step to the one move you'd have to make first",,classic,strategy|planning|novel,either
deep,TRIZ Contradiction,"Name the core contradiction (what only improves by making something else worse), then brainstorm ways to win both instead of trading off",,classic,feature|novel|diagnosis,either
deep,Fishbone Diagram,"Branch the problem's spine into cause categories (people, process, tools, environment) and mine each bone for contributing causes",,classic,diagnosis,either
deep,Build on What Works,"Name what's already succeeding and why, then ideate how to amplify and extend it instead of fixing what's broken",,classic,personal|strategy,either
speculative_future,Scenario Cross,"Pick two high-impact uncertainties, cross them into four futures, and ideate the move that wins in every one",,classic,strategy|planning,either
assets/brain-selector.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>BMad Method Brainstorming Selection</title>
<script>
/* set the theme before first paint so there's no light-mode flash */
(function(){ try {
var t = localStorage.getItem('bmad-theme');
if (!t) { t = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; }
document.documentElement.setAttribute('data-theme', t);
} catch(e){} })();
</script>
<style>
:root {
--bg:#f6f7fb; --surface:#fff; --ink:#1c1e2b; --muted:#6b7080;
--accent:#5b4bdc; --accent-ink:#5b4bdc; --warn:#c0561f;
--line:#e6e8f0; --control:#eef0f7; --control2:#f1f2f8; --raised:#fff;
--cnt:#b9bdce; --foot:#aeb2c4; --shadow:rgba(20,20,50,.06);
}
:root[data-theme="dark"] {
--bg:#0f1117; --surface:#171a23; --ink:#e7e9f2; --muted:#9aa0b4;
--accent:#6d5cf0; --accent-ink:#a99bff; --warn:#e08a4a;
--line:#2a2f3e; --control:#222634; --control2:#1d212d; --raised:#2c3242;
--cnt:#5a6076; --foot:#5a6076; --shadow:rgba(0,0,0,.45);
}
/* lift the category hue toward white on dark surfaces so deep hues stay legible */
:root[data-theme="dark"] section > h2 { color:color-mix(in srgb, var(--c) 62%, #fff); }
:root[data-theme="dark"] .tech .ico { color:color-mix(in srgb, var(--c) 68%, #fff); }
:root[data-theme="dark"] label.tech:has(input:checked) { border-color:color-mix(in srgb, var(--c) 60%, #fff); }
.titlerow { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.themebtn { flex:none; width:36px; height:36px; border-radius:9px; background:var(--control); color:var(--ink); font-size:17px; line-height:1; display:inline-flex; align-items:center; justify-content:center; }
.themebtn:hover { background:var(--raised); }
* { box-sizing:border-box; }
body { margin:0; font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; background:var(--bg); color:var(--ink); }
header { position:sticky; top:0; z-index:5; background:var(--surface); padding:20px 0 12px; border-bottom:1px solid var(--line); box-shadow:0 2px 12px var(--shadow); }
.hwrap { max-width:1120px; margin:0 auto; padding:0 24px; } /* align header content with the card column on wide screens */
h1 { margin:0 0 4px; font-size:24px; letter-spacing:-.02em; }
.sub { margin:0 0 12px; color:var(--muted); font-size:14px; max-width:74ch; }
button { font:inherit; border:0; border-radius:8px; cursor:pointer; }
.composer { display:flex; flex-direction:column; gap:9px; margin:6px 0 12px; }
.grp { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.glabel { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); min-width:74px; }
.modes { display:inline-flex; background:var(--control); border-radius:9px; padding:3px; gap:2px; }
.mode { padding:7px 13px; font-size:14px; font-weight:600; color:var(--muted); background:transparent; }
.mode.on { background:var(--raised); color:var(--accent-ink); box-shadow:0 1px 3px var(--shadow); }
.modehint { flex:1 1 240px; min-width:0; font-size:13px; color:var(--muted); font-style:italic; }
.pill { font-size:13px; color:var(--muted); background:var(--control); padding:6px 12px; border-radius:20px; }
.pill b { color:var(--accent-ink); }
.step { display:inline-flex; align-items:center; gap:7px; font-size:13px; color:var(--ink); background:var(--control2); padding:4px 6px 4px 12px; border-radius:20px; }
.step b { min-width:12px; text-align:center; font-size:14px; color:var(--ink); }
.step button { width:24px; height:24px; border-radius:50%; background:var(--raised); color:var(--muted); font-size:17px; line-height:22px; text-align:center; box-shadow:0 1px 2px var(--shadow); }
.step button:hover { color:var(--accent-ink); }
.total { font-size:12px; color:var(--muted); }
.total.warn { color:var(--warn); font-weight:600; }
.bar { display:flex; gap:10px 14px; align-items:center; flex-wrap:wrap; }
#copy { margin-left:auto; padding:9px 22px; background:var(--accent); color:#fff; font-size:14px; font-weight:700; }
#copy:hover { filter:brightness(1.07); }
.chips { flex:1 1 320px; min-width:0; display:flex; gap:7px; flex-wrap:wrap; align-items:center; }
.chip { font-size:12px; padding:4px 11px; border-radius:16px; border:0; color:#fff; background:var(--cc); font-weight:600; cursor:pointer; }
.chip:hover { filter:brightness(1.08); }
.banner { max-height:0; overflow:hidden; transition:max-height .25s ease, padding .22s ease, margin .22s ease; background:linear-gradient(90deg,var(--accent),#8275f2); color:#fff; border-radius:10px; font-weight:700; text-align:center; padding:0 14px; }
.banner.show { max-height:64px; padding:13px 14px; margin-top:10px; }
.banner.fail { background:linear-gradient(90deg,var(--warn),#e0894a); }
main { padding:18px 24px 60px; max-width:1120px; margin:0 auto; }
section { margin:0 0 26px; }
section > h2 { font-size:13px; text-transform:uppercase; letter-spacing:.08em; color:var(--c); margin:0 0 10px; border-bottom:1px solid color-mix(in srgb, var(--c) 24%, var(--line)); padding-bottom:6px; }
section > h2 .cnt { color:color-mix(in srgb, var(--c) 45%, var(--cnt)); margin-left:6px; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:10px; }
label.tech { display:flex; gap:12px; align-items:flex-start; background:color-mix(in srgb, var(--c) 5%, var(--surface)); border:1px solid color-mix(in srgb, var(--c) 18%, var(--line)); border-radius:10px; padding:11px 13px; cursor:pointer; transition:border-color .12s, box-shadow .12s, background .12s; }
label.tech:hover { border-color:color-mix(in srgb, var(--c) 45%, var(--surface)); }
label.tech input { margin-top:2px; width:17px; height:17px; accent-color:var(--c); flex:none; }
label.tech:has(input:checked) { border-color:var(--c); background:color-mix(in srgb, var(--c) 12%, var(--surface)); box-shadow:0 0 0 2px color-mix(in srgb, var(--c) 30%, transparent); }
.tech .ic2 { display:flex; gap:5px; flex:none; }
.tech .ico { width:40px; height:40px; flex:none; color:var(--c); }
.tech .n { font-weight:600; display:block; }
.tech .d { color:var(--muted); font-size:13.5px; display:block; margin-top:2px; }
.tech .gf { color:var(--accent-ink); font-size:11px; display:block; margin-top:5px; opacity:.85; }
.grouphdr { margin:30px 0 12px; font-size:12px; text-transform:uppercase; letter-spacing:.14em; font-weight:700; color:var(--c); opacity:.92; border-bottom:1px solid color-mix(in srgb, var(--c) 22%, var(--line)); padding-bottom:7px; }
main > .grouphdr:first-child { margin-top:2px; }
:root[data-theme="dark"] .grouphdr { color:color-mix(in srgb, var(--c) 62%, #fff); }
.goals { display:flex; gap:7px; flex-wrap:wrap; }
.goal { font-size:12px; padding:5px 12px; border-radius:16px; background:var(--control); color:var(--muted); font-weight:600; }
.goal:hover { color:var(--ink); }
.goal.on { background:var(--accent); color:#fff; }
label.tech.invent { border-style:dashed; background:transparent; }
label.tech.invent:hover { border-color:var(--c); }
label.tech.invent .n { color:var(--c); }
label.tech.hidden { display:none; }
footer { text-align:center; color:var(--foot); font-size:12px; padding:24px; }
</style>
</head>
<body>
<header>
<div class="hwrap">
<div class="titlerow">
<h1>BMad Method Brainstorming Selection</h1>
<button id="theme" class="themebtn" type="button" aria-label="Toggle dark mode" title="Toggle dark mode"></button>
</div>
<p class="sub">Compose your session, hit <strong>Copy prompt</strong>, and paste it back into the chat to begin. 108 techniques across 13 categories.</p>
<div class="composer">
<div class="grp">
<span class="glabel">Facilitation</span>
<div class="modes" id="modes">
<button type="button" class="mode on" data-mode="Facilitator">Facilitator</button>
<button type="button" class="mode" data-mode="Creative Partner">Creative Partner</button>
<button type="button" class="mode" data-mode="Ideate for me">Ideate for me</button>
</div>
<span class="modehint" id="modehint"></span>
</div>
<div class="grp">
<span class="glabel">Techniques</span>
<span class="pill">Picked <b id="pickN">0</b></span>
<span class="step">Random <button type="button" data-step="rand" data-d="-1">−</button><b id="randN">0</b><button type="button" data-step="rand" data-d="1">+</button></span>
<span class="step">Invent <button type="button" data-step="inv" data-d="-1">−</button><b id="invN">0</b><button type="button" data-step="inv" data-d="1">+</button></span>
<span class="step">AI picks <button type="button" data-step="ai" data-d="-1">−</button><b id="aiN">0</b><button type="button" data-step="ai" data-d="1">+</button></span>
<span class="total" id="total">Total 0 · 3–4 is the sweet spot</span>
<button id="copy" type="button">Copy prompt</button>
</div>
</div>
<div class="bar"><span class="glabel">Great for</span><div class="goals" id="goals"><button type="button" class="goal" data-goal="feature">Build a feature</button><button type="button" class="goal" data-goal="novel">Novel concept</button><button type="button" class="goal" data-goal="strategy">Strategy</button><button type="button" class="goal" data-goal="planning">Planning</button><button type="button" class="goal" data-goal="diagnosis">Diagnose</button><button type="button" class="goal" data-goal="personal">Personal / life</button><button type="button" class="goal" data-goal="unstuck">Get unstuck</button></div></div>
<div class="bar">
<span class="glabel">Jump to</span>
<div class="chips" id="chips"><button type="button" class="chip" data-cat="Proven & Professional" style="--cc:#3d4f73">Proven & Professional</button><button type="button" class="chip" data-cat="Structured" style="--cc:#3b6ea5">Structured</button><button type="button" class="chip" data-cat="Deep" style="--cc:#4658c9">Deep</button><button type="button" class="chip" data-cat="Creative" style="--cc:#6d5cf0">Creative</button><button type="button" class="chip" data-cat="Biomimetic" style="--cc:#1f9d6b">Biomimetic</button><button type="button" class="chip" data-cat="Cultural" style="--cc:#c75b39">Cultural</button><button type="button" class="chip" data-cat="Speculative Future" style="--cc:#0fb5c9">Speculative Future</button><button type="button" class="chip" data-cat="Quantum" style="--cc:#2b86d9">Quantum</button><button type="button" class="chip" data-cat="Wild" style="--cc:#e2562f">Wild</button><button type="button" class="chip" data-cat="Absurdist" style="--cc:#e0529c">Absurdist</button><button type="button" class="chip" data-cat="Theatrical" style="--cc:#cf4d6f">Theatrical</button><button type="button" class="chip" data-cat="Constraint" style="--cc:#d9882b">Constraint</button><button type="button" class="chip" data-cat="Introspective Delight" style="--cc:#b15ad6">Introspective Delight</button><button type="button" class="chip" data-cat="Collaborative" style="--cc:#15a3a3">Collaborative</button></div>
</div>
<div class="banner" id="banner">✓ Copied! Now paste it into the chat to start your session.</div>
</div>
</header>
<main>
<section data-cat="Proven & Professional" style="--c:#3d4f73"><h2>Proven & Professional<span class="cnt">29</span></h2><div class="grid"><label class="tech" style="--c:#15a3a3"><input type="checkbox" data-name="Yes And Building" data-cat="Collaborative" data-desc="Never negate; each person opens with "Yes, and..." and adds to the last idea, stacking a chain of accepted additions" data-good="novel|unstuck|planning" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="8" y="27" width="12" height="8" rx="1.5" fill-opacity=".8"/><rect x="14" y="19" width="12" height="8" rx="1.5" fill-opacity=".5"/><rect x="20" y="11" width="12" height="8" rx="1.5"/></g></svg></span><span><span class="n">Yes And Building</span><span class="d">Never negate; each person opens with "Yes, and..." and adds to the last idea, stacking a chain of accepted additions</span><span class="gf">Great for: Novel concept · Get unstuck · Planning</span></span></label><label class="tech" style="--c:#15a3a3"><input type="checkbox" data-name="Brain Writing Round Robin" data-cat="Collaborative" data-desc="Everyone writes ideas silently, then passes their sheet; you build on whatever lands in front of you, round after round" data-good="novel|feature" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M31 16 A10 10 0 1 0 32.5 22"/><path d="M31 10 L31.5 16.3 L25 16.5"/></g></svg></span><span><span class="n">Brain Writing Round Robin</span><span class="d">Everyone writes ideas silently, then passes their sheet; you build on whatever lands in front of you, round after round</span><span class="gf">Great for: Novel concept · Build a feature</span></span></label><label class="tech" style="--c:#15a3a3"><input type="checkbox" data-name="Random Stimulation" data-cat="Collaborative" data-desc="Pull a random word or image and force a link to the problem: "how does THIS spark a solution?"" data-good="unstuck|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="11" width="22" height="22" rx="4" fill="none" stroke="currentColor" stroke-width="2"/><g fill="currentColor"><circle cx="17" cy="17" r="1.8"/><circle cx="27" cy="17" r="1.8"/><circle cx="22" cy="22" r="1.8"/><circle cx="17" cy="27" r="1.8"/><circle cx="27" cy="27" r="1.8"/></g></svg></span><span><span class="n">Random Stimulation</span><span class="d">Pull a random word or image and force a link to the problem: "how does THIS spark a solution?"</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech" style="--c:#15a3a3"><input type="checkbox" data-name="Role Playing" data-cat="Collaborative" data-desc="Each person speaks as a different stakeholder, voicing what that role wants, fears, and would demand of the idea" data-good="strategy|personal|feature" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="9" width="22" height="26" rx="3" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="22" cy="19" r="4" fill="currentColor"/><path d="M15.5 30 c2 -4.5 11 -4.5 13 0" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Role Playing</span><span class="d">Each person speaks as a different stakeholder, voicing what that role wants, fears, and would demand of the idea</span><span class="gf">Great for: Strategy · Personal / life · Build a feature</span></span></label><label class="tech" style="--c:#6d5cf0"><input type="checkbox" data-name="First Principles Thinking" data-cat="Creative" data-desc="Strip every assumption to bedrock facts, then rebuild the solution from scratch on truth alone" data-good="feature|novel|diagnosis|strategy" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="10" y="28" width="8" height="6" rx="1"/><rect x="18.5" y="28" width="8" height="6" rx="1"/><rect x="27" y="28" width="7" height="6" rx="1"/></g><path d="M22 25 L22 11 M16 17 L22 11 L28 17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">First Principles Thinking</span><span class="d">Strip every assumption to bedrock facts, then rebuild the solution from scratch on truth alone</span><span class="gf">Great for: Build a feature · Novel concept · Diagnose · Strategy</span></span></label><label class="tech" style="--c:#6d5cf0"><input type="checkbox" data-name="Reverse Brainstorming" data-cat="Creative" data-desc="Generate problems instead of solutions — 'how could we make this fail?' — then mine each for its inverse" data-good="diagnosis|feature|unstuck" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 18 H28 a4 4 0 0 1 0 8 H16"/><path d="M19 15 L13 18 L19 21 M22 23 L16 26 L22 29"/></g></svg></span><span><span class="n">Reverse Brainstorming</span><span class="d">Generate problems instead of solutions — 'how could we make this fail?' — then mine each for its inverse</span><span class="gf">Great for: Diagnose · Build a feature · Get unstuck</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Five Whys" data-cat="Deep" data-desc="Ask "why?" five times in a chain, each answer feeding the next, until you hit the root cause beneath the symptom" data-good="diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="13" r="2.4"/><circle cx="22" cy="22" r="2.4"/><circle cx="30" cy="31" r="2.4"/><path d="M15.6 14.8 L20.4 20.2 M23.6 23.8 L28.4 29.2"/></g></svg></span><span><span class="n">Five Whys</span><span class="d">Ask "why?" five times in a chain, each answer feeding the next, until you hit the root cause beneath the symptom</span><span class="gf">Great for: Diagnose</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Provocation Technique" data-cat="Deep" data-desc="State something deliberately absurd, then mine it: "how could this be useful?" Extract the usable principle hiding inside" data-good="unstuck|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M24 9 L13 24 H21 L19 35 L31 19 H23 Z"/></g></svg></span><span><span class="n">Provocation Technique</span><span class="d">State something deliberately absurd, then mine it: "how could this be useful?" Extract the usable principle hiding inside</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Assumption Reversal" data-cat="Deep" data-desc="List every assumption baked into the problem, flip each to its opposite, then rebuild a solution on the inverted foundation" data-good="novel|diagnosis|strategy" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 14 V30"/><path d="M11.5 25 L16 30 L20.5 25"/><path d="M28 30 V14"/><path d="M23.5 19 L28 14 L32.5 19"/></g></svg></span><span><span class="n">Assumption Reversal</span><span class="d">List every assumption baked into the problem, flip each to its opposite, then rebuild a solution on the inverted foundation</span><span class="gf">Great for: Novel concept · Diagnose · Strategy</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Question Storming" data-cat="Deep" data-desc="Generate only questions about the problem, zero answers allowed, until the real problem worth solving comes into focus" data-good="diagnosis|strategy|unstuck" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 16 a3.2 3.2 0 1 1 3.2 3.2 v2"/><path d="M26 13 a3.6 3.6 0 1 1 3.6 3.6 v2.4"/></g><circle cx="17.2" cy="27" r="1.5" fill="currentColor"/><circle cx="29.6" cy="25.6" r="1.6" fill="currentColor"/></svg></span><span><span class="n">Question Storming</span><span class="d">Generate only questions about the problem, zero answers allowed, until the real problem worth solving comes into focus</span><span class="gf">Great for: Diagnose · Strategy · Get unstuck</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Causal Loop Mapping" data-cat="Deep" data-desc="Diagram the feedback loops linking causes and effects, find the reinforcing and balancing cycles, and target the leverage point" data-good="diagnosis|strategy" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 16 a9 9 0 1 1 -2 12"/><path d="M16 10.5 L16.5 16.5 L10.5 17"/><path d="M30 28.5 L29.5 22.5 L35 22"/></g></svg></span><span><span class="n">Causal Loop Mapping</span><span class="d">Diagram the feedback loops linking causes and effects, find the reinforcing and balancing cycles, and target the leverage point</span><span class="gf">Great for: Diagnose · Strategy</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Morphological Analysis" data-cat="Deep" data-desc="List the problem's independent parameters, generate options for each, then combine across them to surface untried configurations" data-good="feature|novel|planning" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.8"><rect x="11" y="11" width="22" height="22" rx="2"/><path d="M11 18.3 H33 M11 25.6 H33 M18.3 11 V33 M25.6 11 V33"/></g><rect x="18.5" y="18.5" width="7" height="7" fill="currentColor" fill-opacity=".4"/></svg></span><span><span class="n">Morphological Analysis</span><span class="d">List the problem's independent parameters, generate options for each, then combine across them to surface untried configurations</span><span class="gf">Great for: Build a feature · Novel concept · Planning</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Laddering" data-cat="Deep" data-desc="Ask 'and what would that give you?' up the chain until you reach the real underlying need, then ideate fresh at that level" data-good="personal|strategy|diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 9 V35 M28 9 V35 M16 15 H28 M16 22 H28 M16 29 H28"/></g></svg></span><span><span class="n">Laddering</span><span class="d">Ask 'and what would that give you?' up the chain until you reach the real underlying need, then ideate fresh at that level</span><span class="gf">Great for: Personal / life · Strategy · Diagnose</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="SCAMPER Method" data-cat="Structured" data-desc="Run your idea through seven lenses: Substitute, Combine, Adapt, Modify, Put-to-other-use, Eliminate, Reverse" data-good="feature|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="5.5" fill="none" stroke="currentColor" stroke-width="2"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><path d="M22 9 V13.5 M22 30.5 V35 M9 22 H13.5 M30.5 22 H35 M12.8 12.8 L16 16 M28 28 L31.2 31.2 M31.2 12.8 L28 16 M16 28 L12.8 31.2"/></g></svg></span><span><span class="n">SCAMPER Method</span><span class="d">Run your idea through seven lenses: Substitute, Combine, Adapt, Modify, Put-to-other-use, Eliminate, Reverse</span><span class="gf">Great for: Build a feature · Novel concept</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Six Thinking Hats" data-cat="Structured" data-desc="Examine the problem six ways one at a time: facts, feelings, benefits, risks, new ideas, process" data-good="strategy|diagnosis|planning|personal" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M14 26 q8 -5 16 0" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M17 26 q-6 1 -8 3 q13 4 26 0 q-2 -2 -8 -3" fill="currentColor" fill-opacity=".22"/><path d="M17 26 c-1 -8 11 -8 10 0" fill="currentColor" fill-opacity=".5"/></svg></span><span><span class="n">Six Thinking Hats</span><span class="d">Examine the problem six ways one at a time: facts, feelings, benefits, risks, new ideas, process</span><span class="gf">Great for: Strategy · Diagnose · Planning · Personal / life</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Lotus Blossom" data-cat="Structured" data-desc="Put the theme at the center of a 3x3 grid, fill the 8 cells around it, then promote each of those to the center of its own new 3x3" data-good="feature|planning|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><circle cx="22" cy="22" r="3.4"/></g><g fill="currentColor" fill-opacity=".4"><circle cx="22" cy="13" r="2.8"/><circle cx="22" cy="31" r="2.8"/><circle cx="13" cy="22" r="2.8"/><circle cx="31" cy="22" r="2.8"/><circle cx="15.5" cy="15.5" r="2.5"/><circle cx="28.5" cy="15.5" r="2.5"/><circle cx="15.5" cy="28.5" r="2.5"/><circle cx="28.5" cy="28.5" r="2.5"/></g></svg></span><span><span class="n">Lotus Blossom</span><span class="d">Put the theme at the center of a 3x3 grid, fill the 8 cells around it, then promote each of those to the center of its own new 3x3</span><span class="gf">Great for: Build a feature · Planning · Novel concept</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Worst Possible Idea" data-cat="Structured" data-desc="Deliberately generate the most terrible solutions you can, then flip each into what it teaches you to do right" data-good="unstuck|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 11 v10 h-5 l10 12 10 -12 h-5 v-10 z"/></g></svg></span><span><span class="n">Worst Possible Idea</span><span class="d">Deliberately generate the most terrible solutions you can, then flip each into what it teaches you to do right</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Disney Method" data-cat="Structured" data-desc="Cycle the idea through three rooms: Dreamer (anything goes), Realist (how we'd build it), Critic (what breaks)" data-good="feature|strategy|planning" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="14" cy="22" r="4.5"/><circle cx="22" cy="22" r="4.5"/><circle cx="30" cy="22" r="4.5"/></g></svg></span><span><span class="n">Disney Method</span><span class="d">Cycle the idea through three rooms: Dreamer (anything goes), Realist (how we'd build it), Critic (what breaks)</span><span class="gf">Great for: Build a feature · Strategy · Planning</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Starbursting" data-cat="Structured" data-desc="Interrogate the idea with only questions — who, what, where, when, why, how — exhaust each before answering any" data-good="feature|planning|diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 8 V15 M22 29 V36 M8 22 H15 M29 22 H36 M12 12 L17 17 M27 27 L32 32 M32 12 L27 17 M12 32 L17 27"/></g><path d="M19.5 19 a3.2 3.2 0 1 1 3 4 v1.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="n">Starbursting</span><span class="d">Interrogate the idea with only questions — who, what, where, when, why, how — exhaust each before answering any</span><span class="gf">Great for: Build a feature · Planning · Diagnose</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Mind Mapping" data-cat="Structured" data-desc="Branch the central topic outward, each node spawning children; follow tangents wherever they pull and let the web sprawl" data-good="planning|novel|feature" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="22" cy="22" r="4"/><circle cx="11" cy="13" r="2.2"/><circle cx="33" cy="13" r="2.2"/><circle cx="10" cy="28" r="2.2"/><circle cx="32" cy="31" r="2.2"/><path d="M19 19.5 L12.5 14.5 M25 19.5 L31.5 14.5 M19 24.5 L11.5 27 M25.5 24 L30.5 29.5"/></g></svg></span><span><span class="n">Mind Mapping</span><span class="d">Branch the central topic outward, each node spawning children; follow tangents wherever they pull and let the web sprawl</span><span class="gf">Great for: Planning · Novel concept · Build a feature</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Crazy 8s" data-cat="Structured" data-desc="Eight ideas in eight minutes, one per box, no editing — speed outruns your inner critic" data-good="feature|novel|unstuck" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.7"><rect x="9" y="12" width="8" height="9" rx="1.5"/><rect x="18" y="12" width="8" height="9" rx="1.5"/><rect x="27" y="12" width="8" height="9" rx="1.5"/><rect x="9" y="23" width="8" height="9" rx="1.5"/><rect x="18" y="23" width="8" height="9" rx="1.5"/><rect x="27" y="23" width="8" height="9" rx="1.5"/></g></svg></span><span><span class="n">Crazy 8s</span><span class="d">Eight ideas in eight minutes, one per box, no editing — speed outruns your inner critic</span><span class="gf">Great for: Build a feature · Novel concept · Get unstuck</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="How Might We" data-cat="Structured" data-desc="Reframe the problem as a batch of 'How might we...' opportunity questions first, then ideate against the sharpest one" data-good="feature|novel|strategy|diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 13 H33 a2 2 0 0 1 2 2 V27 a2 2 0 0 1 -2 2 H24 L19 34 V29 H11 a2 2 0 0 1 -2 -2 V15 a2 2 0 0 1 2 -2 Z"/></g><path d="M19 19 a3.2 3.2 0 1 1 3.4 3.4 v1.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="22.4" cy="27" r="1.4" fill="currentColor"/></svg></span><span><span class="n">How Might We</span><span class="d">Reframe the problem as a batch of 'How might we...' opportunity questions first, then ideate against the sharpest one</span><span class="gf">Great for: Build a feature · Novel concept · Strategy · Diagnose</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Job to Be Done" data-cat="Structured" data-desc="Ask what the user is really hiring this to do, then ideate around that underlying job, not the feature you assumed" data-good="feature|strategy|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"><rect x="9" y="16" width="26" height="16" rx="2.5"/><path d="M17 16 v-3 a2 2 0 0 1 2 -2 h6 a2 2 0 0 1 2 2 v3"/><path d="M9 23 H35"/></g><circle cx="22" cy="23" r="1.8" fill="currentColor"/></svg></span><span><span class="n">Job to Be Done</span><span class="d">Ask what the user is really hiring this to do, then ideate around that underlying job, not the feature you assumed</span><span class="gf">Great for: Build a feature · Strategy · Novel concept</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Empathy Map" data-cat="Structured" data-desc="Map what the user says, thinks, does, and feels around the problem, then mine each quadrant for the unmet need" data-good="feature|personal" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.8"><rect x="11" y="11" width="22" height="22" rx="2"/><path d="M11 22 H33 M22 11 V33"/></g><path d="M22 27 c-2.6 -2.1 -4.2 -3.4 -4.2 -5.2 a2.1 2.1 0 0 1 4.2 -1 a2.1 2.1 0 0 1 4.2 1 c0 1.8 -1.6 3.1 -4.2 5.2 z" fill="currentColor"/></svg></span><span><span class="n">Empathy Map</span><span class="d">Map what the user says, thinks, does, and feels around the problem, then mine each quadrant for the unmet need</span><span class="gf">Great for: Build a feature · Personal / life</span></span></label><label class="tech" style="--c:#3b6ea5"><input type="checkbox" data-name="Backcasting" data-cat="Structured" data-desc="Fix the finished future in vivid detail, then work backward step by step to the one move you'd have to make first" data-good="strategy|planning|novel" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M30 11 V33"/></g><path d="M30 13 L20 16.5 L30 20 Z" fill="currentColor"/><path d="M28 27 H14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="1.5 3"/><path d="M18 23 L14 27 L18 31" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Backcasting</span><span class="d">Fix the finished future in vivid detail, then work backward step by step to the one move you'd have to make first</span><span class="gf">Great for: Strategy · Planning · Novel concept</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="TRIZ Contradiction" data-cat="Deep" data-desc="Name the core contradiction (what only improves by making something else worse), then brainstorm ways to win both instead of trading off" data-good="feature|novel|diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 15 H18 M14.5 11.5 L18 15 L14.5 18.5"/><path d="M35 29 H26 M29.5 25.5 L26 29 L29.5 32.5"/></g><path d="M22 17.5 l1.5 3.4 3.7 .3 -2.8 2.4 .9 3.6 -3.3 -1.9 -3.3 1.9 .9 -3.6 -2.8 -2.4 3.7 -.3 z" fill="currentColor"/></svg></span><span><span class="n">TRIZ Contradiction</span><span class="d">Name the core contradiction (what only improves by making something else worse), then brainstorm ways to win both instead of trading off</span><span class="gf">Great for: Build a feature · Novel concept · Diagnose</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Fishbone Diagram" data-cat="Deep" data-desc="Branch the problem's spine into cause categories (people, process, tools, environment) and mine each bone for contributing causes" data-good="diagnosis" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 22 H33"/><path d="M33 22 L36 18.5 M33 22 L36 25.5"/><path d="M14 22 L18 15 M14 22 L18 29 M23 22 L27 15 M23 22 L27 29"/></g><circle cx="9" cy="22" r="1.9" fill="currentColor"/></svg></span><span><span class="n">Fishbone Diagram</span><span class="d">Branch the problem's spine into cause categories (people, process, tools, environment) and mine each bone for contributing causes</span><span class="gf">Great for: Diagnose</span></span></label><label class="tech" style="--c:#4658c9"><input type="checkbox" data-name="Build on What Works" data-cat="Deep" data-desc="Name what's already succeeding and why, then ideate how to amplify and extend it instead of fixing what's broken" data-good="personal|strategy" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="24" width="6" height="9" rx="1"/><rect x="19" y="19" width="6" height="14" rx="1"/><rect x="27" y="13" width="6" height="20" rx="1"/></g><path d="M11 19 L18 13 L24 16 L33 8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M28 8 H33 V13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Build on What Works</span><span class="d">Name what's already succeeding and why, then ideate how to amplify and extend it instead of fixing what's broken</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech" style="--c:#0fb5c9"><input type="checkbox" data-name="Scenario Cross" data-cat="Speculative Future" data-desc="Pick two high-impact uncertainties, cross them into four futures, and ideate the move that wins in every one" data-good="strategy|planning" data-prov="classic" data-lead="1"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M22 9 V35 M9 22 H35"/></g><g fill="currentColor"><circle cx="15" cy="15" r="2"/><circle cx="29" cy="15" r="2"/><circle cx="15" cy="29" r="2"/><circle cx="29" cy="29" r="2"/></g></svg></span><span><span class="n">Scenario Cross</span><span class="d">Pick two high-impact uncertainties, cross them into four futures, and ideate the move that wins in every one</span><span class="gf">Great for: Strategy · Planning</span></span></label></div></section>
<h2 class="grouphdr" style="--c:#3b6ea5">Structured & Analytical</h2>
<section data-cat="Structured" style="--c:#3b6ea5"><h2>Structured<span class="cnt">15</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="SCAMPER Method" data-cat="Structured" data-desc="Run your idea through seven lenses: Substitute, Combine, Adapt, Modify, Put-to-other-use, Eliminate, Reverse" data-good="feature|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="5.5" fill="none" stroke="currentColor" stroke-width="2"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><path d="M22 9 V13.5 M22 30.5 V35 M9 22 H13.5 M30.5 22 H35 M12.8 12.8 L16 16 M28 28 L31.2 31.2 M31.2 12.8 L28 16 M16 28 L12.8 31.2"/></g></svg></span><span><span class="n">SCAMPER Method</span><span class="d">Run your idea through seven lenses: Substitute, Combine, Adapt, Modify, Put-to-other-use, Eliminate, Reverse</span><span class="gf">Great for: Build a feature · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Six Thinking Hats" data-cat="Structured" data-desc="Examine the problem six ways one at a time: facts, feelings, benefits, risks, new ideas, process" data-good="strategy|diagnosis|planning|personal" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M14 26 q8 -5 16 0" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M17 26 q-6 1 -8 3 q13 4 26 0 q-2 -2 -8 -3" fill="currentColor" fill-opacity=".22"/><path d="M17 26 c-1 -8 11 -8 10 0" fill="currentColor" fill-opacity=".5"/></svg></span><span><span class="n">Six Thinking Hats</span><span class="d">Examine the problem six ways one at a time: facts, feelings, benefits, risks, new ideas, process</span><span class="gf">Great for: Strategy · Diagnose · Planning · Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Decision Tree Mapping" data-cat="Structured" data-desc="Chart every choice point and the paths it forks into, following each branch to its outcome and risk" data-good="planning|strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="22" cy="12" r="2.6"/><circle cx="14" cy="32" r="2.6"/><circle cx="30" cy="32" r="2.6"/><path d="M22 14.5 L22 20 M22 20 L14 29.4 M22 20 L30 29.4"/></g></svg></span><span><span class="n">Decision Tree Mapping</span><span class="d">Chart every choice point and the paths it forks into, following each branch to its outcome and risk</span><span class="gf">Great for: Planning · Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Solution Matrix" data-cat="Structured" data-desc="Grid problem variables against solution approaches, score every cell, hunt the best pairings and empty gaps" data-good="feature|planning" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.8"><rect x="11" y="11" width="22" height="22" rx="2"/><path d="M11 22 H33 M22 11 V33"/></g><path d="M24.5 14.5 L26.5 16.5 L30.5 12.5" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Solution Matrix</span><span class="d">Grid problem variables against solution approaches, score every cell, hunt the best pairings and empty gaps</span><span class="gf">Great for: Build a feature · Planning</span></span></label><label class="tech"><input type="checkbox" data-name="Trait Transfer" data-cat="Structured" data-desc="Name what makes an unrelated success work, then graft those winning traits onto your own problem" data-good="novel|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M12 16 l1.6 3.4 3.6 .4 -2.7 2.5 .7 3.6 -3.2 -1.8 -3.2 1.8 .7 -3.6 -2.7 -2.5 3.6 -.4 z" fill="currentColor"/><rect x="25" y="23" width="9" height="9" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><path d="M17 22 L25 27" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="1.5 2.5"/></svg></span><span><span class="n">Trait Transfer</span><span class="d">Name what makes an unrelated success work, then graft those winning traits onto your own problem</span><span class="gf">Great for: Novel concept · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Lotus Blossom" data-cat="Structured" data-desc="Put the theme at the center of a 3x3 grid, fill the 8 cells around it, then promote each of those to the center of its own new 3x3" data-good="feature|planning|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><circle cx="22" cy="22" r="3.4"/></g><g fill="currentColor" fill-opacity=".4"><circle cx="22" cy="13" r="2.8"/><circle cx="22" cy="31" r="2.8"/><circle cx="13" cy="22" r="2.8"/><circle cx="31" cy="22" r="2.8"/><circle cx="15.5" cy="15.5" r="2.5"/><circle cx="28.5" cy="15.5" r="2.5"/><circle cx="15.5" cy="28.5" r="2.5"/><circle cx="28.5" cy="28.5" r="2.5"/></g></svg></span><span><span class="n">Lotus Blossom</span><span class="d">Put the theme at the center of a 3x3 grid, fill the 8 cells around it, then promote each of those to the center of its own new 3x3</span><span class="gf">Great for: Build a feature · Planning · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Worst Possible Idea" data-cat="Structured" data-desc="Deliberately generate the most terrible solutions you can, then flip each into what it teaches you to do right" data-good="unstuck|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 11 v10 h-5 l10 12 10 -12 h-5 v-10 z"/></g></svg></span><span><span class="n">Worst Possible Idea</span><span class="d">Deliberately generate the most terrible solutions you can, then flip each into what it teaches you to do right</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Disney Method" data-cat="Structured" data-desc="Cycle the idea through three rooms: Dreamer (anything goes), Realist (how we'd build it), Critic (what breaks)" data-good="feature|strategy|planning" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="14" cy="22" r="4.5"/><circle cx="22" cy="22" r="4.5"/><circle cx="30" cy="22" r="4.5"/></g></svg></span><span><span class="n">Disney Method</span><span class="d">Cycle the idea through three rooms: Dreamer (anything goes), Realist (how we'd build it), Critic (what breaks)</span><span class="gf">Great for: Build a feature · Strategy · Planning</span></span></label><label class="tech"><input type="checkbox" data-name="Starbursting" data-cat="Structured" data-desc="Interrogate the idea with only questions — who, what, where, when, why, how — exhaust each before answering any" data-good="feature|planning|diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 8 V15 M22 29 V36 M8 22 H15 M29 22 H36 M12 12 L17 17 M27 27 L32 32 M32 12 L27 17 M12 32 L17 27"/></g><path d="M19.5 19 a3.2 3.2 0 1 1 3 4 v1.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="n">Starbursting</span><span class="d">Interrogate the idea with only questions — who, what, where, when, why, how — exhaust each before answering any</span><span class="gf">Great for: Build a feature · Planning · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Mind Mapping" data-cat="Structured" data-desc="Branch the central topic outward, each node spawning children; follow tangents wherever they pull and let the web sprawl" data-good="planning|novel|feature" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="22" cy="22" r="4"/><circle cx="11" cy="13" r="2.2"/><circle cx="33" cy="13" r="2.2"/><circle cx="10" cy="28" r="2.2"/><circle cx="32" cy="31" r="2.2"/><path d="M19 19.5 L12.5 14.5 M25 19.5 L31.5 14.5 M19 24.5 L11.5 27 M25.5 24 L30.5 29.5"/></g></svg></span><span><span class="n">Mind Mapping</span><span class="d">Branch the central topic outward, each node spawning children; follow tangents wherever they pull and let the web sprawl</span><span class="gf">Great for: Planning · Novel concept · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Crazy 8s" data-cat="Structured" data-desc="Eight ideas in eight minutes, one per box, no editing — speed outruns your inner critic" data-good="feature|novel|unstuck" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.7"><rect x="9" y="12" width="8" height="9" rx="1.5"/><rect x="18" y="12" width="8" height="9" rx="1.5"/><rect x="27" y="12" width="8" height="9" rx="1.5"/><rect x="9" y="23" width="8" height="9" rx="1.5"/><rect x="18" y="23" width="8" height="9" rx="1.5"/><rect x="27" y="23" width="8" height="9" rx="1.5"/></g></svg></span><span><span class="n">Crazy 8s</span><span class="d">Eight ideas in eight minutes, one per box, no editing — speed outruns your inner critic</span><span class="gf">Great for: Build a feature · Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="How Might We" data-cat="Structured" data-desc="Reframe the problem as a batch of 'How might we...' opportunity questions first, then ideate against the sharpest one" data-good="feature|novel|strategy|diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 13 H33 a2 2 0 0 1 2 2 V27 a2 2 0 0 1 -2 2 H24 L19 34 V29 H11 a2 2 0 0 1 -2 -2 V15 a2 2 0 0 1 2 -2 Z"/></g><path d="M19 19 a3.2 3.2 0 1 1 3.4 3.4 v1.6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><circle cx="22.4" cy="27" r="1.4" fill="currentColor"/></svg></span><span><span class="n">How Might We</span><span class="d">Reframe the problem as a batch of 'How might we...' opportunity questions first, then ideate against the sharpest one</span><span class="gf">Great for: Build a feature · Novel concept · Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Job to Be Done" data-cat="Structured" data-desc="Ask what the user is really hiring this to do, then ideate around that underlying job, not the feature you assumed" data-good="feature|strategy|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"><rect x="9" y="16" width="26" height="16" rx="2.5"/><path d="M17 16 v-3 a2 2 0 0 1 2 -2 h6 a2 2 0 0 1 2 2 v3"/><path d="M9 23 H35"/></g><circle cx="22" cy="23" r="1.8" fill="currentColor"/></svg></span><span><span class="n">Job to Be Done</span><span class="d">Ask what the user is really hiring this to do, then ideate around that underlying job, not the feature you assumed</span><span class="gf">Great for: Build a feature · Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Empathy Map" data-cat="Structured" data-desc="Map what the user says, thinks, does, and feels around the problem, then mine each quadrant for the unmet need" data-good="feature|personal" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.8"><rect x="11" y="11" width="22" height="22" rx="2"/><path d="M11 22 H33 M22 11 V33"/></g><path d="M22 27 c-2.6 -2.1 -4.2 -3.4 -4.2 -5.2 a2.1 2.1 0 0 1 4.2 -1 a2.1 2.1 0 0 1 4.2 1 c0 1.8 -1.6 3.1 -4.2 5.2 z" fill="currentColor"/></svg></span><span><span class="n">Empathy Map</span><span class="d">Map what the user says, thinks, does, and feels around the problem, then mine each quadrant for the unmet need</span><span class="gf">Great for: Build a feature · Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Backcasting" data-cat="Structured" data-desc="Fix the finished future in vivid detail, then work backward step by step to the one move you'd have to make first" data-good="strategy|planning|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M30 11 V33"/></g><path d="M30 13 L20 16.5 L30 20 Z" fill="currentColor"/><path d="M28 27 H14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="1.5 3"/><path d="M18 23 L14 27 L18 31" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Backcasting</span><span class="d">Fix the finished future in vivid detail, then work backward step by step to the one move you'd have to make first</span><span class="gf">Great for: Strategy · Planning · Novel concept</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Structured"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="11" width="9.5" height="9.5" rx="2"/><rect x="23.5" y="11" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="11" y="23.5" width="9.5" height="9.5" rx="2" fill-opacity="0.25"/><rect x="23.5" y="23.5" width="9.5" height="9.5" rx="2"/></g></svg></span><span><span class="n">✨ Invent a Structured technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Structured</span></span></label></div></section>
<section data-cat="Deep" style="--c:#4658c9"><h2>Deep<span class="cnt">13</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Five Whys" data-cat="Deep" data-desc="Ask "why?" five times in a chain, each answer feeding the next, until you hit the root cause beneath the symptom" data-good="diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="13" r="2.4"/><circle cx="22" cy="22" r="2.4"/><circle cx="30" cy="31" r="2.4"/><path d="M15.6 14.8 L20.4 20.2 M23.6 23.8 L28.4 29.2"/></g></svg></span><span><span class="n">Five Whys</span><span class="d">Ask "why?" five times in a chain, each answer feeding the next, until you hit the root cause beneath the symptom</span><span class="gf">Great for: Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Provocation Technique" data-cat="Deep" data-desc="State something deliberately absurd, then mine it: "how could this be useful?" Extract the usable principle hiding inside" data-good="unstuck|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M24 9 L13 24 H21 L19 35 L31 19 H23 Z"/></g></svg></span><span><span class="n">Provocation Technique</span><span class="d">State something deliberately absurd, then mine it: "how could this be useful?" Extract the usable principle hiding inside</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Assumption Reversal" data-cat="Deep" data-desc="List every assumption baked into the problem, flip each to its opposite, then rebuild a solution on the inverted foundation" data-good="novel|diagnosis|strategy" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 14 V30"/><path d="M11.5 25 L16 30 L20.5 25"/><path d="M28 30 V14"/><path d="M23.5 19 L28 14 L32.5 19"/></g></svg></span><span><span class="n">Assumption Reversal</span><span class="d">List every assumption baked into the problem, flip each to its opposite, then rebuild a solution on the inverted foundation</span><span class="gf">Great for: Novel concept · Diagnose · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Question Storming" data-cat="Deep" data-desc="Generate only questions about the problem, zero answers allowed, until the real problem worth solving comes into focus" data-good="diagnosis|strategy|unstuck" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 16 a3.2 3.2 0 1 1 3.2 3.2 v2"/><path d="M26 13 a3.6 3.6 0 1 1 3.6 3.6 v2.4"/></g><circle cx="17.2" cy="27" r="1.5" fill="currentColor"/><circle cx="29.6" cy="25.6" r="1.6" fill="currentColor"/></svg></span><span><span class="n">Question Storming</span><span class="d">Generate only questions about the problem, zero answers allowed, until the real problem worth solving comes into focus</span><span class="gf">Great for: Diagnose · Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Constraint Mapping" data-cat="Deep" data-desc="Map every constraint, sort real from imagined, then attack each: dissolve it, route around it, or turn it into an asset" data-good="feature|strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M11 14 L18 12 L26 14 L33 12 V30 L26 32 L18 30 L11 32 Z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><path d="M18 12 V30 M26 14 V32" stroke="currentColor" stroke-width="1.6"/></svg></span><span><span class="n">Constraint Mapping</span><span class="d">Map every constraint, sort real from imagined, then attack each: dissolve it, route around it, or turn it into an asset</span><span class="gf">Great for: Build a feature · Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Failure Analysis" data-cat="Deep" data-desc="Dissect a relevant failure: what broke, why it broke, what lesson it leaves, and how to apply that wisdom here" data-good="diagnosis|strategy|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="20" cy="20" r="8" fill="none" stroke="currentColor" stroke-width="2"/><line x1="26" y1="26" x2="33" y2="33" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/><path d="M20 16 V21 M20 24 V24" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Failure Analysis</span><span class="d">Dissect a relevant failure: what broke, why it broke, what lesson it leaves, and how to apply that wisdom here</span><span class="gf">Great for: Diagnose · Strategy · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Emergent Thinking" data-cat="Deep" data-desc="Stop forcing a solution; watch what patterns the system keeps producing and name what's trying to emerge on its own" data-good="strategy|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><circle cx="11" cy="31" r="1.6"/><circle cx="17" cy="29" r="1.6"/><circle cx="16" cy="23" r="1.6"/><circle cx="22" cy="24" r="1.8"/><circle cx="23" cy="17" r="1.9"/><circle cx="29" cy="18" r="1.7"/><circle cx="28" cy="12" r="2.1"/></g></svg></span><span><span class="n">Emergent Thinking</span><span class="d">Stop forcing a solution; watch what patterns the system keeps producing and name what's trying to emerge on its own</span><span class="gf">Great for: Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Causal Loop Mapping" data-cat="Deep" data-desc="Diagram the feedback loops linking causes and effects, find the reinforcing and balancing cycles, and target the leverage point" data-good="diagnosis|strategy" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 16 a9 9 0 1 1 -2 12"/><path d="M16 10.5 L16.5 16.5 L10.5 17"/><path d="M30 28.5 L29.5 22.5 L35 22"/></g></svg></span><span><span class="n">Causal Loop Mapping</span><span class="d">Diagram the feedback loops linking causes and effects, find the reinforcing and balancing cycles, and target the leverage point</span><span class="gf">Great for: Diagnose · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Morphological Analysis" data-cat="Deep" data-desc="List the problem's independent parameters, generate options for each, then combine across them to surface untried configurations" data-good="feature|novel|planning" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="1.8"><rect x="11" y="11" width="22" height="22" rx="2"/><path d="M11 18.3 H33 M11 25.6 H33 M18.3 11 V33 M25.6 11 V33"/></g><rect x="18.5" y="18.5" width="7" height="7" fill="currentColor" fill-opacity=".4"/></svg></span><span><span class="n">Morphological Analysis</span><span class="d">List the problem's independent parameters, generate options for each, then combine across them to surface untried configurations</span><span class="gf">Great for: Build a feature · Novel concept · Planning</span></span></label><label class="tech"><input type="checkbox" data-name="Laddering" data-cat="Deep" data-desc="Ask 'and what would that give you?' up the chain until you reach the real underlying need, then ideate fresh at that level" data-good="personal|strategy|diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 9 V35 M28 9 V35 M16 15 H28 M16 22 H28 M16 29 H28"/></g></svg></span><span><span class="n">Laddering</span><span class="d">Ask 'and what would that give you?' up the chain until you reach the real underlying need, then ideate fresh at that level</span><span class="gf">Great for: Personal / life · Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="TRIZ Contradiction" data-cat="Deep" data-desc="Name the core contradiction (what only improves by making something else worse), then brainstorm ways to win both instead of trading off" data-good="feature|novel|diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 15 H18 M14.5 11.5 L18 15 L14.5 18.5"/><path d="M35 29 H26 M29.5 25.5 L26 29 L29.5 32.5"/></g><path d="M22 17.5 l1.5 3.4 3.7 .3 -2.8 2.4 .9 3.6 -3.3 -1.9 -3.3 1.9 .9 -3.6 -2.8 -2.4 3.7 -.3 z" fill="currentColor"/></svg></span><span><span class="n">TRIZ Contradiction</span><span class="d">Name the core contradiction (what only improves by making something else worse), then brainstorm ways to win both instead of trading off</span><span class="gf">Great for: Build a feature · Novel concept · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Fishbone Diagram" data-cat="Deep" data-desc="Branch the problem's spine into cause categories (people, process, tools, environment) and mine each bone for contributing causes" data-good="diagnosis" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 22 H33"/><path d="M33 22 L36 18.5 M33 22 L36 25.5"/><path d="M14 22 L18 15 M14 22 L18 29 M23 22 L27 15 M23 22 L27 29"/></g><circle cx="9" cy="22" r="1.9" fill="currentColor"/></svg></span><span><span class="n">Fishbone Diagram</span><span class="d">Branch the problem's spine into cause categories (people, process, tools, environment) and mine each bone for contributing causes</span><span class="gf">Great for: Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Build on What Works" data-cat="Deep" data-desc="Name what's already succeeding and why, then ideate how to amplify and extend it instead of fixing what's broken" data-good="personal|strategy" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="11" y="24" width="6" height="9" rx="1"/><rect x="19" y="19" width="6" height="14" rx="1"/><rect x="27" y="13" width="6" height="20" rx="1"/></g><path d="M11 19 L18 13 L24 16 L33 8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M28 8 H33 V13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Build on What Works</span><span class="d">Name what's already succeeding and why, then ideate how to amplify and extend it instead of fixing what's broken</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Deep"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor"><circle cx="22" cy="22" r="13" stroke-width="1.5" stroke-opacity="0.4"/><circle cx="22" cy="22" r="9" stroke-width="1.7" stroke-opacity="0.7"/><circle cx="22" cy="22" r="5" stroke-width="1.9"/></g><circle cx="22" cy="22" r="2.4" fill="currentColor"/></svg></span><span><span class="n">✨ Invent a Deep technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Deep</span></span></label></div></section>
<h2 class="grouphdr" style="--c:#6d5cf0">Creative & Generative</h2>
<section data-cat="Creative" style="--c:#6d5cf0"><h2>Creative<span class="cnt">10</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="What If Scenarios" data-cat="Creative" data-desc="Detonate one constraint at a time — unlimited budget, opposite is true, problem vanished — and chase what rushes in" data-good="novel|strategy|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 17 a4 4 0 1 1 4 4 v3"/></g><circle cx="22" cy="30" r="1.6" fill="currentColor"/></svg></span><span><span class="n">What If Scenarios</span><span class="d">Detonate one constraint at a time — unlimited budget, opposite is true, problem vanished — and chase what rushes in</span><span class="gf">Great for: Novel concept · Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Analogical Thinking" data-cat="Creative" data-desc="Ask 'this is like what?' and steal the solution pattern from the domain that answers" data-good="feature|novel|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="15" cy="22" r="6" fill="none" stroke="currentColor" stroke-width="2"/><rect x="25" y="16" width="12" height="12" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><path d="M19 20 q2 2 0 4 M23 20 q-2 2 0 4" stroke="currentColor" stroke-width="1.6" fill="none"/></svg></span><span><span class="n">Analogical Thinking</span><span class="d">Ask 'this is like what?' and steal the solution pattern from the domain that answers</span><span class="gf">Great for: Build a feature · Novel concept · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="First Principles Thinking" data-cat="Creative" data-desc="Strip every assumption to bedrock facts, then rebuild the solution from scratch on truth alone" data-good="feature|novel|diagnosis|strategy" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="10" y="28" width="8" height="6" rx="1"/><rect x="18.5" y="28" width="8" height="6" rx="1"/><rect x="27" y="28" width="7" height="6" rx="1"/></g><path d="M22 25 L22 11 M16 17 L22 11 L28 17" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">First Principles Thinking</span><span class="d">Strip every assumption to bedrock facts, then rebuild the solution from scratch on truth alone</span><span class="gf">Great for: Build a feature · Novel concept · Diagnose · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Forced Relationships" data-cat="Creative" data-desc="Grab two unrelated things at random and force a bridge between them until an idea falls out" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="12" cy="22" r="3.4" fill="currentColor"/><circle cx="32" cy="22" r="3.4" fill="currentColor"/><path d="M15 22 q7 -9 14 0" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="1.5 3"/></svg></span><span><span class="n">Forced Relationships</span><span class="d">Grab two unrelated things at random and force a bridge between them until an idea falls out</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Time Shifting" data-cat="Creative" data-desc="Solve the problem as a 1900s artisan, then a 2150 colonist — harvest the era-bound constraints and tricks" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="12" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 15 V22 L27 25" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Time Shifting</span><span class="d">Solve the problem as a 1900s artisan, then a 2150 colonist — harvest the era-bound constraints and tricks</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Metaphor Mapping" data-cat="Creative" data-desc="Declare the problem IS a chosen metaphor, extend the metaphor fully, map each part back to find insights" data-good="novel|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="10" y="14" width="14" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="28" cy="25" r="7" fill="currentColor" fill-opacity=".22"/><circle cx="28" cy="25" r="7" fill="none" stroke="currentColor" stroke-width="2"/></svg></span><span><span class="n">Metaphor Mapping</span><span class="d">Declare the problem IS a chosen metaphor, extend the metaphor fully, map each part back to find insights</span><span class="gf">Great for: Novel concept · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Cross-Pollination" data-cat="Creative" data-desc="Ask how a wildly different industry — casinos, ERs, beekeeping — would crack this, then adapt their move" data-good="novel|feature|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 14 H27 a4 4 0 0 1 0 8 H17 a4 4 0 0 0 0 8 H31"/><path d="M28 11 L31.5 14 L28 17 M16 27 L12.5 30 L16 33"/></g></svg></span><span><span class="n">Cross-Pollination</span><span class="d">Ask how a wildly different industry — casinos, ERs, beekeeping — would crack this, then adapt their move</span><span class="gf">Great for: Novel concept · Build a feature · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Concept Blending" data-cat="Creative" data-desc="Fuse two concepts into one new hybrid category and name what the merger becomes, not just combines" data-good="novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="18" cy="22" r="8" fill="currentColor" fill-opacity=".25"/><circle cx="26" cy="22" r="8" fill="currentColor" fill-opacity=".25"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="18" cy="22" r="8"/><circle cx="26" cy="22" r="8"/></g></svg></span><span><span class="n">Concept Blending</span><span class="d">Fuse two concepts into one new hybrid category and name what the merger becomes, not just combines</span><span class="gf">Great for: Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Reverse Brainstorming" data-cat="Creative" data-desc="Generate problems instead of solutions — 'how could we make this fail?' — then mine each for its inverse" data-good="diagnosis|feature|unstuck" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 18 H28 a4 4 0 0 1 0 8 H16"/><path d="M19 15 L13 18 L19 21 M22 23 L16 26 L22 29"/></g></svg></span><span><span class="n">Reverse Brainstorming</span><span class="d">Generate problems instead of solutions — 'how could we make this fail?' — then mine each for its inverse</span><span class="gf">Great for: Diagnose · Build a feature · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Sensory Exploration" data-cat="Creative" data-desc="Interrogate the idea through each sense — its taste, smell, sound, texture — to surface non-analytical angles" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M10 22 q12 -10 24 0 q-12 10 -24 0 z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><circle cx="22" cy="22" r="4" fill="currentColor"/></svg></span><span><span class="n">Sensory Exploration</span><span class="d">Interrogate the idea through each sense — its taste, smell, sound, texture — to surface non-analytical angles</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Creative"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.4" stroke-linecap="round"><line x1="22" y1="6.5" x2="22" y2="12.5"/><line x1="22" y1="31.5" x2="22" y2="37.5"/><line x1="6.5" y1="22" x2="12.5" y2="22"/><line x1="31.5" y1="22" x2="37.5" y2="22"/><line x1="11.3" y1="11.3" x2="15.5" y2="15.5"/><line x1="28.5" y1="28.5" x2="32.7" y2="32.7"/><line x1="32.7" y1="11.3" x2="28.5" y2="15.5"/><line x1="15.5" y1="28.5" x2="11.3" y2="32.7"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="3.6" fill="currentColor"/></svg></span><span><span class="n">✨ Invent a Creative technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Creative</span></span></label></div></section>
<section data-cat="Biomimetic" style="--c:#1f9d6b"><h2>Biomimetic<span class="cnt">6</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Nature's Solutions" data-cat="Biomimetic" data-desc="Name an organism that already solved your problem, then copy its mechanism into your design" data-good="feature|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 32 C12 24 12 20 16 12 M28 32 C32 24 32 20 28 12"/><path d="M16 16 L28 14 M16 22 L28 20 M16 28 L28 26"/></g></svg></span><span><span class="n">Nature's Solutions</span><span class="d">Name an organism that already solved your problem, then copy its mechanism into your design</span><span class="gf">Great for: Build a feature · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Ecosystem Thinking" data-cat="Biomimetic" data-desc="Map your problem as an ecosystem: who eats whom, who partners, what decays, what fills the gaps" data-good="strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="22" cy="13" r="2.4"/><circle cx="12" cy="27" r="2.4"/><circle cx="32" cy="27" r="2.4"/><circle cx="22" cy="24" r="2.4"/><path d="M22 15.4 V21.6 M14 26 L20 24.5 M30 26 L24 24.5 M13.6 25.2 L30.4 25.2"/></g></svg></span><span><span class="n">Ecosystem Thinking</span><span class="d">Map your problem as an ecosystem: who eats whom, who partners, what decays, what fills the gaps</span><span class="gf">Great for: Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Evolutionary Pressure" data-cat="Biomimetic" data-desc="Spawn many ugly variants, apply a brutal selection rule, breed the survivors, repeat until it adapts" data-good="feature|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 31 H17 M19 31 a6 6 0 0 1 6 -6 M25 25 a5 5 0 0 1 5 -5 M30 20 H33"/><circle cx="11" cy="31" r="2" fill="currentColor"/><circle cx="33" cy="20" r="2.6" fill="currentColor"/></g></svg></span><span><span class="n">Evolutionary Pressure</span><span class="d">Spawn many ugly variants, apply a brutal selection rule, breed the survivors, repeat until it adapts</span><span class="gf">Great for: Build a feature · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Predator & Prey" data-cat="Biomimetic" data-desc="Pick a threat to your idea, then design the defense, camouflage, or escape an animal would evolve against it" data-good="strategy|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 9 L33 14 V23 C33 30 28 34 22 36 C16 34 11 30 11 23 V14 Z" fill="currentColor" fill-opacity=".18"/><path d="M22 9 L33 14 V23 C33 30 28 34 22 36 C16 34 11 30 11 23 V14 Z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg></span><span><span class="n">Predator & Prey</span><span class="d">Pick a threat to your idea, then design the defense, camouflage, or escape an animal would evolve against it</span><span class="gf">Great for: Strategy · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Metamorphosis Stages" data-cat="Biomimetic" data-desc="Force your idea through egg, larva, pupa, adult: a radically different form and purpose at each life stage" data-good="novel|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12 V32"/><path d="M22 16 C14 12 10 18 14 22 C10 26 14 32 22 28 C30 32 34 26 30 22 C34 18 30 12 22 16"/></g></svg></span><span><span class="n">Metamorphosis Stages</span><span class="d">Force your idea through egg, larva, pupa, adult: a radically different form and purpose at each life stage</span><span class="gf">Great for: Novel concept · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Swarm Logic" data-cat="Biomimetic" data-desc="Forbid the master plan: solve it with dumb local rules each agent follows so order emerges from the bottom up" data-good="feature|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 10 L29 14 V22 L22 26 L15 22 V14 Z"/><path d="M15 24 L18 33 M29 24 L26 33 M22 28 V35" stroke-opacity=".6"/></g></svg></span><span><span class="n">Swarm Logic</span><span class="d">Forbid the master plan: solve it with dumb local rules each agent follows so order emerges from the bottom up</span><span class="gf">Great for: Build a feature · Strategy</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Biomimetic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 7.5 C 31.5 12.5, 31.5 29, 22 36.5 C 12.5 29, 12.5 12.5, 22 7.5 Z" fill="currentColor" fill-opacity="0.22"/><path d="M22 9 V 35.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><g stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M22 16 l5.6 -2.6"/><path d="M22 16 l-5.6 -2.6"/><path d="M22 22 l6.6 -2.6"/><path d="M22 22 l-6.6 -2.6"/><path d="M22 28 l5.6 -2.6"/><path d="M22 28 l-5.6 -2.6"/></g></svg></span><span><span class="n">✨ Invent a Biomimetic technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Biomimetic</span></span></label></div></section>
<section data-cat="Cultural" style="--c:#c75b39"><h2>Cultural<span class="cnt">7</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Indigenous Wisdom" data-cat="Cultural" data-desc="Ask how an indigenous or traditional knowledge system would approach this — name the culture, channel its ancestral problem-solving" data-good="personal|strategy|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M26 11 C18 16 14 24 13 33 M26 11 C28 18 26 25 20 29"/><path d="M26 11 C24 13 22 14 19 15 M24 16 C22 18 20 19 17 20 M22 21 C20 23 18 24 15 25"/></g></svg></span><span><span class="n">Indigenous Wisdom</span><span class="d">Ask how an indigenous or traditional knowledge system would approach this — name the culture, channel its ancestral problem-solving</span><span class="gf">Great for: Personal / life · Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Fusion Cuisine" data-cat="Cultural" data-desc="Pick two unrelated cultures and force-blend their approaches; harvest the hybrid that neither alone would invent" data-good="novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 19 a12 7 0 0 0 24 0 Z"/><path d="M22 19 V32 M16 32 H28"/></g></svg></span><span><span class="n">Fusion Cuisine</span><span class="d">Pick two unrelated cultures and force-blend their approaches; harvest the hybrid that neither alone would invent</span><span class="gf">Great for: Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Ritual Innovation" data-cat="Cultural" data-desc="Redesign the idea as a ceremony — define the threshold, the gestures, the transformation participants undergo" data-good="novel|personal" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 33 V17 a10 10 0 0 1 20 0 V33"/><path d="M12 33 H32 M22 33 V21"/></g></svg></span><span><span class="n">Ritual Innovation</span><span class="d">Redesign the idea as a ceremony — define the threshold, the gestures, the transformation participants undergo</span><span class="gf">Great for: Novel concept · Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Mythic Frameworks" data-cat="Cultural" data-desc="Map the problem onto a myth: name the archetypes, find the parallel tale, let its structure dictate the resolution" data-good="strategy|personal|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 12 h13 a3 3 0 0 1 3 3 v17 l-3 -2 -3 2 -3 -2 -3 2 V15 a3 3 0 0 0 -3 -3 z"/><path d="M14 12 a3 3 0 0 0 -3 3 h6"/><path d="M20 18 H26 M20 23 H26"/></g></svg></span><span><span class="n">Mythic Frameworks</span><span class="d">Map the problem onto a myth: name the archetypes, find the parallel tale, let its structure dictate the resolution</span><span class="gf">Great for: Strategy · Personal / life · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Proverb Mining" data-cat="Cultural" data-desc="Collect proverbs from many cultures on this theme, then build the solution from the one that clashes hardest with your assumptions" data-good="personal|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 14 C17 10 11 11 11 11 V30 s6 -1 11 3 c5 -4 11 -3 11 -3 V11 s-6 -1 -11 3 z"/><path d="M22 14 V31"/></g></svg></span><span><span class="n">Proverb Mining</span><span class="d">Collect proverbs from many cultures on this theme, then build the solution from the one that clashes hardest with your assumptions</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Ancestor Council" data-cat="Cultural" data-desc="Convene three ancestors or elders from different traditions, voice each one's verdict on your idea, reconcile their disagreement" data-good="personal|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="22" cy="14" r="3.5"/><circle cx="13" cy="19" r="3"/><circle cx="31" cy="19" r="3"/></g><g fill="currentColor" fill-opacity=".25"><path d="M16 31 c0 -5 12 -5 12 0 z"/><path d="M8 31 c0 -4 9 -4.5 9 0 z"/><path d="M27 31 c0 -4.5 9 -4 9 0 z"/></g></svg></span><span><span class="n">Ancestor Council</span><span class="d">Convene three ancestors or elders from different traditions, voice each one's verdict on your idea, reconcile their disagreement</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Trickster's Gambit" data-cat="Cultural" data-desc="Channel the trickster figure — coyote, Anansi, Loki — and solve it by cheating, inverting, or breaking the sacred rule" data-good="unstuck|strategy" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="12" width="13" height="18" rx="2" transform="rotate(-10 17.5 21)" fill="currentColor" fill-opacity=".2" stroke="currentColor" stroke-width="2"/><rect x="20" y="14" width="13" height="18" rx="2" transform="rotate(10 26.5 23)" fill="none" stroke="currentColor" stroke-width="2"/><path d="M26.5 19 l1.4 3 1.4 -3 -1.4 -1 z" fill="currentColor"/></svg></span><span><span class="n">Trickster's Gambit</span><span class="d">Channel the trickster figure — coyote, Anansi, Loki — and solve it by cheating, inverting, or breaking the sacred rule</span><span class="gf">Great for: Get unstuck · Strategy</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Cultural"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="13.5" fill="currentColor" fill-opacity="0.14"/><g stroke="currentColor" stroke-width="1.6" fill="none"><circle cx="22" cy="22" r="13.5"/><ellipse cx="22" cy="22" rx="6" ry="13.5"/><line x1="8.5" y1="22" x2="35.5" y2="22"/><path d="M11 15 H 33" stroke-opacity="0.55"/><path d="M11 29 H 33" stroke-opacity="0.55"/></g></svg></span><span><span class="n">✨ Invent a Cultural technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Cultural</span></span></label></div></section>
<section data-cat="Speculative Future" style="--c:#0fb5c9"><h2>Speculative Future<span class="cnt">8</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Time Horizon Ladder" data-cat="Speculative Future" data-desc="Solve the idea for 1 year out, then 10, then 100 — note what survives, breaks, or becomes absurd at each rung" data-good="strategy|planning|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 30 H35"/><path d="M14 30 V24 M22 30 V18 M30 30 V12"/></g><g fill="currentColor"><circle cx="14" cy="24" r="2"/><circle cx="22" cy="18" r="2"/><circle cx="30" cy="12" r="2"/></g></svg></span><span><span class="n">Time Horizon Ladder</span><span class="d">Solve the idea for 1 year out, then 10, then 100 — note what survives, breaks, or becomes absurd at each rung</span><span class="gf">Great for: Strategy · Planning · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Post-Scarcity Test" data-cat="Speculative Future" data-desc="Assume the core constraint (money, energy, time, attention) is now infinite and free — what does the idea become" data-good="novel|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 22 a4.5 4.5 0 1 1 4.5 4.5 C16 26.5 14 18 11 18 a3.5 3.5 0 0 0 0 7 c4 0 5 -8 11 -8 a4.5 4.5 0 0 1 0 9 c-3 0 -4 -4.5 -7 -4.5"/></g></svg></span><span><span class="n">Post-Scarcity Test</span><span class="d">Assume the core constraint (money, energy, time, attention) is now infinite and free — what does the idea become</span><span class="gf">Great for: Novel concept · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Utopia vs Dystopia Split-Screen" data-cat="Speculative Future" data-desc="Write the same future twice: the brochure where it went perfectly and the headline where it went horribly" data-good="strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="11" width="22" height="22" rx="3" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 11 V33" stroke="currentColor" stroke-width="2"/><path d="M22 11 H33 a0 0 0 0 1 0 0 V33 H22 Z" fill="currentColor" fill-opacity=".8"/></svg></span><span><span class="n">Utopia vs Dystopia Split-Screen</span><span class="d">Write the same future twice: the brochure where it went perfectly and the headline where it went horribly</span><span class="gf">Great for: Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Sci-Fi Artifact From the Future" data-cat="Speculative Future" data-desc="Describe one physical object, ad, or news clip from the world where this idea already won — reverse-engineer it" data-good="novel|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 9 L33 15 V28 L22 35 L11 28 V15 Z" fill="currentColor" fill-opacity=".15"/><path d="M22 9 L33 15 V28 L22 35 L11 28 V15 Z M11 15 L22 21 L33 15 M22 21 V35" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg></span><span><span class="n">Sci-Fi Artifact From the Future</span><span class="d">Describe one physical object, ad, or news clip from the world where this idea already won — reverse-engineer it</span><span class="gf">Great for: Novel concept · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Emerging Tech Collision" data-cat="Speculative Future" data-desc="Force-marry your idea to a frontier tech (AGI, fusion, neural implants, gene edit) and ask what new thing is born" data-good="novel|feature|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="15" y="15" width="14" height="14" rx="2" fill="currentColor" fill-opacity=".22"/><rect x="15" y="15" width="14" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><g stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M19 15 V10 M25 15 V10 M19 29 V34 M25 29 V34 M15 19 H10 M15 25 H10 M29 19 H34 M29 25 H34"/></g></svg></span><span><span class="n">Emerging Tech Collision</span><span class="d">Force-marry your idea to a frontier tech (AGI, fusion, neural implants, gene edit) and ask what new thing is born</span><span class="gf">Great for: Novel concept · Build a feature · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="What-If-The-World-Changed Card Flip" data-cat="Speculative Future" data-desc="Draw a wild world-shift (no privacy, half population, 200-yr lifespans) and redesign the idea to fit that world" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="13" y="10" width="18" height="24" rx="2.5" fill="currentColor" fill-opacity=".18" stroke="currentColor" stroke-width="2"/><path d="M22 10 V34" stroke="currentColor" stroke-width="1.6" stroke-dasharray="2 2.5"/><path d="M27 16 a4 4 0 1 1 4 4" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg></span><span><span class="n">What-If-The-World-Changed Card Flip</span><span class="d">Draw a wild world-shift (no privacy, half population, 200-yr lifespans) and redesign the idea to fit that world</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Future Anthropologist Dig" data-cat="Speculative Future" data-desc="A scholar in 2200 unearths your idea as a relic — what do they conclude it reveals about us, and what replaced it" data-good="strategy|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 27 a6 6 0 1 1 0.1 0 z"/><path d="M22 23 a2.5 2.5 0 1 0 0.1 0 M19 30 a5 5 0 0 0 6 0"/></g><path d="M12 16 L17 13 M32 16 L27 13" stroke="currentColor" stroke-width="1.6" stroke-opacity=".5"/></svg></span><span><span class="n">Future Anthropologist Dig</span><span class="d">A scholar in 2200 unearths your idea as a relic — what do they conclude it reveals about us, and what replaced it</span><span class="gf">Great for: Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Scenario Cross" data-cat="Speculative Future" data-desc="Pick two high-impact uncertainties, cross them into four futures, and ideate the move that wins in every one" data-good="strategy|planning" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M22 9 V35 M9 22 H35"/></g><g fill="currentColor"><circle cx="15" cy="15" r="2"/><circle cx="29" cy="15" r="2"/><circle cx="15" cy="29" r="2"/><circle cx="29" cy="29" r="2"/></g></svg></span><span><span class="n">Scenario Cross</span><span class="d">Pick two high-impact uncertainties, cross them into four futures, and ideate the move that wins in every one</span><span class="gf">Great for: Strategy · Planning</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Speculative Future"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M11 31 L 26.5 15.5"/><path d="M20 14.5 H 28 V 22.5"/></g><circle cx="31" cy="12" r="2.8" fill="currentColor"/><g stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><line x1="31" y1="6.5" x2="31" y2="8.4"/><line x1="31" y1="15.6" x2="31" y2="17.5"/><line x1="25.5" y1="12" x2="27.4" y2="12"/><line x1="34.6" y1="12" x2="36.5" y2="12"/></g></svg></span><span><span class="n">✨ Invent a Speculative Future technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Speculative Future</span></span></label></div></section>
<section data-cat="Quantum" style="--c:#2b86d9"><h2>Quantum<span class="cnt">6</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Observer Effect" data-cat="Quantum" data-desc="Ask how the act of watching, measuring, or shipping this idea changes the very thing you're trying to capture" data-good="strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M9 22 q13 -10 26 0 q-13 10 -26 0 z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><circle cx="22" cy="22" r="4.5" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="22" cy="22" r="1.8" fill="currentColor"/></svg></span><span><span class="n">Observer Effect</span><span class="d">Ask how the act of watching, measuring, or shipping this idea changes the very thing you're trying to capture</span><span class="gf">Great for: Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Entanglement Thinking" data-cat="Quantum" data-desc="Pair two distant parts of the problem and insist a change in one instantly flips the other — surface the hidden linkage" data-good="diagnosis|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="15" cy="22" r="6"/><circle cx="29" cy="22" r="6"/></g><path d="M15 22 h14" stroke="currentColor" stroke-width="2" stroke-dasharray="1.5 2.5"/><g fill="currentColor"><circle cx="15" cy="22" r="1.8"/><circle cx="29" cy="22" r="1.8"/></g></svg></span><span><span class="n">Entanglement Thinking</span><span class="d">Pair two distant parts of the problem and insist a change in one instantly flips the other — surface the hidden linkage</span><span class="gf">Great for: Diagnose · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Superposition Collapse" data-cat="Quantum" data-desc="Hold all rival solutions alive at once, then name the one constraint that collapses them to a single winner" data-good="strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 12 C20 16 24 16 33 12 M11 18 C20 22 24 22 33 18 M11 24 C20 28 24 28 33 24"/><path d="M22 26 V34"/></g><circle cx="22" cy="34" r="2" fill="currentColor"/></svg></span><span><span class="n">Superposition Collapse</span><span class="d">Hold all rival solutions alive at once, then name the one constraint that collapses them to a single winner</span><span class="gf">Great for: Strategy · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Relativity Frame Shift" data-cat="Quantum" data-desc="Re-run the idea from a wildly different observer's reference frame — the slow user, the rival, future-you — and see what warps" data-good="strategy|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="11" width="22" height="22" rx="2" fill="none" stroke="currentColor" stroke-width="2" stroke-opacity=".4"/><rect x="15" y="15" width="18" height="18" rx="2" transform="rotate(-14 22 22)" fill="none" stroke="currentColor" stroke-width="2"/></svg></span><span><span class="n">Relativity Frame Shift</span><span class="d">Re-run the idea from a wildly different observer's reference frame — the slow user, the rival, future-you — and see what warps</span><span class="gf">Great for: Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Field Lines" data-cat="Quantum" data-desc="Treat the goal as a charge and map the invisible forces pulling every stakeholder toward or away from it" data-good="strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 13 V31 M16 13 C24 18 24 26 16 31 M22 13 C32 18 32 26 22 31"/></g><circle cx="11" cy="22" r="2" fill="currentColor"/></svg></span><span><span class="n">Field Lines</span><span class="d">Treat the goal as a charge and map the invisible forces pulling every stakeholder toward or away from it</span><span class="gf">Great for: Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Quantum Tunneling" data-cat="Quantum" data-desc="Assume the idea can pass straight through the 'impossible' barrier instead of over it — what's on the other side, reached cheaply" data-good="unstuck|novel" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="20" y="9" width="5" height="26" rx="1.5" fill="currentColor" fill-opacity=".3"/><path d="M10 22 H34" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/><path d="M28 17 L34 22 L28 27" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Quantum Tunneling</span><span class="d">Assume the idea can pass straight through the 'impossible' barrier instead of over it — what's on the other side, reached cheaply</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Quantum"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8" fill="none"><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(28 22 22)"/><ellipse cx="22" cy="22" rx="14.5" ry="6" transform="rotate(-28 22 22)"/></g><circle cx="22" cy="22" r="6.6" fill="currentColor" fill-opacity="0.18"/><circle cx="22" cy="22" r="3.4" fill="currentColor"/><circle cx="33.2" cy="17.4" r="2" fill="currentColor"/></svg></span><span><span class="n">✨ Invent a Quantum technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Quantum</span></span></label></div></section>
<h2 class="grouphdr" style="--c:#e2562f">Wild & Playful</h2>
<section data-cat="Wild" style="--c:#e2562f"><h2>Wild<span class="cnt">7</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Chaos Engineering" data-cat="Wild" data-desc="Deliberately break your idea every way it could fail, then rebuild only the parts that survive the wreckage" data-good="feature|diagnosis|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 9 L25 18 L34 18 L27 24 L30 33 L22 27 L14 33 L17 24 L10 18 L19 18 Z"/></g></svg></span><span><span class="n">Chaos Engineering</span><span class="d">Deliberately break your idea every way it could fail, then rebuild only the parts that survive the wreckage</span><span class="gf">Great for: Build a feature · Diagnose · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Guerrilla Gardening Ideas" data-cat="Wild" data-desc="Plant your solution in the least expected place and let it grow underground until it surprises everyone" data-good="strategy|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 33 V21"/><path d="M22 22 c-7 0 -9 -6 -9 -9 c6 0 9 3 9 9 z"/><path d="M22 24 c6 0 8 -4 8 -7 c-5 0 -8 2 -8 7 z"/></g></svg></span><span><span class="n">Guerrilla Gardening Ideas</span><span class="d">Plant your solution in the least expected place and let it grow underground until it surprises everyone</span><span class="gf">Great for: Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Pirate Code Brainstorm" data-cat="Wild" data-desc="Steal the best bits from anywhere, remix without asking permission, grab what works and run" data-good="novel|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 10 c-7 0 -11 5 -11 11 c0 4 2 6 4 7 v4 h3 v-2 h2 v2 h4 v-2 h2 v2 h3 v-4 c2 -1 4 -3 4 -7 c0 -6 -4 -11 -11 -11 z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/><g fill="currentColor"><circle cx="17.5" cy="21" r="2.2"/><circle cx="26.5" cy="21" r="2.2"/></g></svg></span><span><span class="n">Pirate Code Brainstorm</span><span class="d">Steal the best bits from anywhere, remix without asking permission, grab what works and run</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Zombie Apocalypse Planning" data-cat="Wild" data-desc="Society just collapsed — strip your idea to only what survives with no power, no rules, no backup" data-good="feature|strategy|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="4" fill="none" stroke="currentColor" stroke-width="2"/><g fill="none" stroke="currentColor" stroke-width="2"><path d="M22 10 a12 12 0 0 1 6 3.5 M32 16 a12 12 0 0 1 0 12 M28 33.5 a12 12 0 0 1 -12 0 M12 28 a12 12 0 0 1 0 -12 M16 10.5 a12 12 0 0 1 6 -0.5" stroke-dasharray="0.1 5.5"/></g><g fill="currentColor"><circle cx="22" cy="11" r="2"/><circle cx="11" cy="22" r="2"/><circle cx="33" cy="22" r="2"/></g></svg></span><span><span class="n">Zombie Apocalypse Planning</span><span class="d">Society just collapsed — strip your idea to only what survives with no power, no rules, no backup</span><span class="gf">Great for: Build a feature · Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Drunk History Retelling" data-cat="Wild" data-desc="Explain it like you're three drinks in: no filter, no jargon, just the raw stupid-simple truth" data-good="unstuck|diagnosis" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 12 H31 L25 23 V31 H19 V23 Z"/><path d="M19 31 H25" /></g><circle cx="29" cy="14" r="1.4" fill="currentColor"/></svg></span><span><span class="n">Drunk History Retelling</span><span class="d">Explain it like you're three drinks in: no filter, no jargon, just the raw stupid-simple truth</span><span class="gf">Great for: Get unstuck · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Anti-Solution" data-cat="Wild" data-desc="Brainstorm how to make the problem spectacularly worse, then invert every sabotage into a fix" data-good="diagnosis|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 18 a8 8 0 1 1 -1 8"/><path d="M14 12 L14 18.5 L20 18"/></g></svg></span><span><span class="n">Anti-Solution</span><span class="d">Brainstorm how to make the problem spectacularly worse, then invert every sabotage into a fix</span><span class="gf">Great for: Diagnose · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Elemental Forces" data-cat="Wild" data-desc="Let fire, water, earth, and air each sculpt your idea their own brutal way and see what survives" data-good="novel|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 8 L30 22 H14 Z"/><path d="M14 30 L22 36 L30 30"/><path d="M14 26 H30"/></g></svg></span><span><span class="n">Elemental Forces</span><span class="d">Let fire, water, earth, and air each sculpt your idea their own brutal way and see what survives</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Wild"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M24.5 6.5 L 12.5 24 H 19.5 L 17.5 37.5 L 31.5 18.5 H 24 L 24.5 6.5 Z" fill="currentColor"/></svg></span><span><span class="n">✨ Invent a Wild technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Wild</span></span></label></div></section>
<section data-cat="Absurdist" style="--c:#e0529c"><h2>Absurdist<span class="cnt">6</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Villain's Monologue" data-cat="Absurdist" data-desc="Pitch your problem as an evil mastermind gloating about their scheme; the diabolical plan reveals the real solution" data-good="diagnosis|strategy|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20 C16 18 19 18 22 21 C25 18 28 18 32 20 C30 24 26 24 22 21 C18 24 14 24 12 20 Z"/></g><circle cx="22" cy="14" r="2.4" fill="currentColor"/></svg></span><span><span class="n">Villain's Monologue</span><span class="d">Pitch your problem as an evil mastermind gloating about their scheme; the diabolical plan reveals the real solution</span><span class="gf">Great for: Diagnose · Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Explain It to a Golden Retriever" data-cat="Absurdist" data-desc="Re-pitch the idea to an excitable dog who only cares about treats, balls, and naps; keep only what survives" data-good="unstuck|diagnosis|feature" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 18 C12 12 17 13 18 17 M30 18 C32 12 27 13 26 17"/><path d="M15 19 C13 28 18 33 22 33 C26 33 31 28 29 19 C26 16 18 16 15 19 Z"/></g><g fill="currentColor"><circle cx="19" cy="24" r="1.4"/><circle cx="25" cy="24" r="1.4"/><circle cx="22" cy="28" r="1.6"/></g></svg></span><span><span class="n">Explain It to a Golden Retriever</span><span class="d">Re-pitch the idea to an excitable dog who only cares about treats, balls, and naps; keep only what survives</span><span class="gf">Great for: Get unstuck · Diagnose · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Infomercial at 3AM" data-cat="Absurdist" data-desc="Sell your half-baked idea as a desperate late-night infomercial: 'But wait, there's more!' until features fall out" data-good="strategy|novel" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="9" y="14" width="26" height="18" rx="2.5" fill="none" stroke="currentColor" stroke-width="2"/><path d="M18 9 L22 14 L26 9" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M22 19 l1 2.6 2.8 .2 -2.1 1.9 .7 2.7 -2.4 -1.5 -2.4 1.5 .7 -2.7 -2.1 -1.9 2.8 -.2 z" fill="currentColor"/></svg></span><span><span class="n">Infomercial at 3AM</span><span class="d">Sell your half-baked idea as a desperate late-night infomercial: 'But wait, there's more!' until features fall out</span><span class="gf">Great for: Strategy · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Drunk Uncle at Thanksgiving" data-cat="Absurdist" data-desc="Have your loudest, least-filtered relative rant about the problem; mine the unhinged hot takes for buried truth" data-good="unstuck|diagnosis" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 16 L20 16 L27 11 V29 L20 24 L11 24 Z"/><path d="M30 16 q3 4 0 8 M33 13 q5 7 0 14"/></g></svg></span><span><span class="n">Drunk Uncle at Thanksgiving</span><span class="d">Have your loudest, least-filtered relative rant about the problem; mine the unhinged hot takes for buried truth</span><span class="gf">Great for: Get unstuck · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Cursed Genie" data-cat="Absurdist" data-desc="Make a wish, then let a malicious genie grant it in the most technically-correct disastrous way; patch each loophole" data-good="diagnosis|feature" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 30 h18 a2 2 0 0 0 2 -2 c0 -5 -6 -5 -8 -8 c5 -1 8 -3 8 -3 c-4 -2 -12 -2 -16 1 c-4 3 -5 9 -4 12 z"/><path d="M30 17 L33 14 M31 21 L35 20" stroke-opacity=".6"/></g></svg></span><span><span class="n">Cursed Genie</span><span class="d">Make a wish, then let a malicious genie grant it in the most technically-correct disastrous way; patch each loophole</span><span class="gf">Great for: Diagnose · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Three Rounds of Stupid" data-cat="Absurdist" data-desc="Round 1 absurd ideas, Round 2 make each MORE absurd, Round 3 find the smallest serious thing hiding in the silliest" data-good="unstuck|novel" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 30 V20 M9 24 L13 20 L17 24 M22 30 V15 M18 19 L22 15 L26 19 M31 30 V11 M27 15 L31 11 L35 15"/></g></svg></span><span><span class="n">Three Rounds of Stupid</span><span class="d">Round 1 absurd ideas, Round 2 make each MORE absurd, Round 3 find the smallest serious thing hiding in the silliest</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Absurdist"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g transform="rotate(-12 22 22)"><circle cx="22" cy="22" r="13" fill="currentColor" fill-opacity="0.14"/><circle cx="22" cy="22" r="13" stroke="currentColor" stroke-width="1.6" fill="none"/><path d="M16 19 q 2 -2.4 4 0" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/><circle cx="26.5" cy="18.8" r="1.8" fill="currentColor"/><path d="M16.5 26 C 19 30, 25 30, 28 24.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></g></svg></span><span><span class="n">✨ Invent a Absurdist technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Absurdist</span></span></label></div></section>
<section data-cat="Theatrical" style="--c:#cf4d6f"><h2>Theatrical<span class="cnt">7</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Time Travel Talk Show" data-cat="Theatrical" data-desc="Host a talk show interviewing your past, present, and future selves to mine each era for advice on the problem" data-good="novel|personal" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="18" y="9" width="8" height="15" rx="4" fill="currentColor" fill-opacity=".25"/><rect x="18" y="9" width="8" height="15" rx="4" fill="none" stroke="currentColor" stroke-width="2"/><path d="M14 21 a8 8 0 0 0 16 0 M22 29 V34 M17 34 H27" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Time Travel Talk Show</span><span class="d">Host a talk show interviewing your past, present, and future selves to mine each era for advice on the problem</span><span class="gf">Great for: Novel concept · Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Alien Anthropologist" data-cat="Theatrical" data-desc="Become a baffled alien studying the problem and narrate aloud what seems strange, arbitrary, or insane about it" data-good="diagnosis|unstuck|strategy" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><ellipse cx="22" cy="30" rx="13" ry="4.5" fill="currentColor" fill-opacity=".25"/><path d="M22 11 c7 0 10 6 10 11 c0 5 -5 7 -10 7 c-5 0 -10 -2 -10 -7 c0 -5 3 -11 10 -11 z" fill="none" stroke="currentColor" stroke-width="2"/><g fill="currentColor"><ellipse cx="18" cy="22" rx="1.6" ry="2.4"/><ellipse cx="26" cy="22" rx="1.6" ry="2.4"/></g></svg></span><span><span class="n">Alien Anthropologist</span><span class="d">Become a baffled alien studying the problem and narrate aloud what seems strange, arbitrary, or insane about it</span><span class="gf">Great for: Diagnose · Get unstuck · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Dream Fusion Laboratory" data-cat="Theatrical" data-desc="Voice the impossible fantasy solution first, then reverse-engineer the bridging steps back to reality" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 9 H26 M19.5 9 V18 L13 30 a2 2 0 0 0 2 3 H29 a2 2 0 0 0 2 -3 L24.5 18 V9"/></g><path d="M16.5 26 H27.5" stroke="currentColor" stroke-width="2"/><circle cx="20" cy="29" r="1.4" fill="currentColor"/><circle cx="25" cy="28" r="1.1" fill="currentColor"/></svg></span><span><span class="n">Dream Fusion Laboratory</span><span class="d">Voice the impossible fantasy solution first, then reverse-engineer the bridging steps back to reality</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Emotion Orchestra" data-cat="Theatrical" data-desc="Run a separate ideation round led by each emotion (rage, joy, fear, hope), then harmonize their conflicting ideas" data-good="personal|strategy" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 30 V15 L31 12 V27"/><circle cx="14" cy="30" r="3"/><circle cx="28" cy="27" r="3"/></g></svg></span><span><span class="n">Emotion Orchestra</span><span class="d">Run a separate ideation round led by each emotion (rage, joy, fear, hope), then harmonize their conflicting ideas</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Parallel Universe Cafe" data-cat="Theatrical" data-desc="Rewrite one fundamental rule of reality (physics, economics, social norms) and solve the problem under those laws" data-good="novel|unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><circle cx="18" cy="22" r="9"/><circle cx="26" cy="22" r="9" stroke-dasharray="2.5 2.5"/></g></svg></span><span><span class="n">Parallel Universe Cafe</span><span class="d">Rewrite one fundamental rule of reality (physics, economics, social norms) and solve the problem under those laws</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Persona Journey" data-cat="Theatrical" data-desc="Embody an archetype and solve the problem in-character, naming what that persona sees that you normally miss" data-good="feature|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M14 33 q-2 -8 6 -9 q8 -1 6 -8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="0.1 4"/><circle cx="14" cy="33" r="2.4" fill="currentColor"/><path d="M26 16 l3 -5 3 5 z" fill="currentColor"/></svg></span><span><span class="n">Persona Journey</span><span class="d">Embody an archetype and solve the problem in-character, naming what that persona sees that you normally miss</span><span class="gf">Great for: Build a feature · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Devil's Advocate Courtroom" data-cat="Theatrical" data-desc="Stage a trial: prosecute the idea, defend it, then deliver the jury verdict, each role argued fully in character" data-good="strategy|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 10 V32 M14 32 H30"/><path d="M11 16 H33 M11 16 L8 23 H14 Z M33 16 L30 23 H36 Z"/></g></svg></span><span><span class="n">Devil's Advocate Courtroom</span><span class="d">Stage a trial: prosecute the idea, defend it, then deliver the jury verdict, each role argued fully in character</span><span class="gf">Great for: Strategy · Diagnose</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Theatrical"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" fill="currentColor" fill-opacity="0.18"/><path d="M13 12 H 31 V 22 C 31 30, 27 35, 22 35 C 17 35, 13 30, 13 22 Z" stroke="currentColor" stroke-width="1.8" fill="none"/><g fill="currentColor"><circle cx="18.5" cy="21" r="1.7"/><circle cx="25.5" cy="21" r="1.7"/></g><path d="M18 27 C 20 29.5, 24 29.5, 26 27" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" fill="none"/></svg></span><span><span class="n">✨ Invent a Theatrical technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Theatrical</span></span></label></div></section>
<section data-cat="Constraint" style="--c:#d9882b"><h2>Constraint<span class="cnt">7</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Kill the Crown Jewel" data-cat="Constraint" data-desc="Delete the single best, most beloved feature — now redesign the whole thing to win without it" data-good="feature|strategy|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 28 L13 15 L19 22 L22 12 L25 22 L31 15 L33 28 Z"/><path d="M11 28 H33"/></g><path d="M14 12 L30 32" stroke="currentColor" stroke-width="2.4" stroke-linecap="round"/></svg></span><span><span class="n">Kill the Crown Jewel</span><span class="d">Delete the single best, most beloved feature — now redesign the whole thing to win without it</span><span class="gf">Great for: Build a feature · Strategy · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="1000x Budget" data-cat="Constraint" data-desc="Pretend money, time, and people are infinite — design the absurd version, then mine it for ideas you can actually steal" data-good="novel|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="22" cy="14" rx="9" ry="3.5"/><path d="M13 14 V22 a9 3.5 0 0 0 18 0 V14"/><path d="M13 22 V30 a9 3.5 0 0 0 18 0 V22"/></g></svg></span><span><span class="n">1000x Budget</span><span class="d">Pretend money, time, and people are infinite — design the absurd version, then mine it for ideas you can actually steal</span><span class="gf">Great for: Novel concept · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Ship in 60 Minutes" data-cat="Constraint" data-desc="You launch in one hour with what's already on hand — name what you cut, fake, or borrow to make it real" data-good="feature|planning|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="24" r="11" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 24 V17 M22 24 L27 27" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M18 8 H26 M22 8 V13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Ship in 60 Minutes</span><span class="d">You launch in one hour with what's already on hand — name what you cut, fake, or borrow to make it real</span><span class="gf">Great for: Build a feature · Planning · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="The $0 Mandate" data-cat="Constraint" data-desc="Achieve the goal spending literally nothing — no tools, hires, or ads; only people, favors, and what you own" data-good="planning|strategy|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="11" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 14 V30 M18 18 a4 3 0 0 1 8 0 a4 3 0 0 1 -8 4 a4 3 0 0 0 8 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><path d="M14 30 L30 14" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/></svg></span><span><span class="n">The $0 Mandate</span><span class="d">Achieve the goal spending literally nothing — no tools, hires, or ads; only people, favors, and what you own</span><span class="gf">Great for: Planning · Strategy · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="One Feature Only" data-cat="Constraint" data-desc="You may keep exactly ONE capability and nothing else — pick it, then make that single thing unbelievably good" data-good="feature|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="22" cy="22" r="4.5"/><path d="M22 9 V13 M22 31 V35 M9 22 H13 M31 22 H35" stroke-opacity=".35"/></g><circle cx="22" cy="22" r="2" fill="currentColor"/></svg></span><span><span class="n">One Feature Only</span><span class="d">You may keep exactly ONE capability and nothing else — pick it, then make that single thing unbelievably good</span><span class="gf">Great for: Build a feature · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Crank the Dial to 11" data-cat="Constraint" data-desc="Pick one dimension and exaggerate it to a ludicrous extreme — fastest, biggest, cheapest, weirdest — and see what breaks open" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M11 28 A12 12 0 0 1 33 28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M22 28 L31 17" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"/><circle cx="22" cy="28" r="2.6" fill="currentColor"/></svg></span><span><span class="n">Crank the Dial to 11</span><span class="d">Pick one dimension and exaggerate it to a ludicrous extreme — fastest, biggest, cheapest, weirdest — and see what breaks open</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Constraint Roulette" data-cat="Constraint" data-desc="Each round draw a brutal random limit (no screens, half the team, one day) and re-solve under it; survivors become real ideas" data-good="unstuck|feature" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="12" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="22" cy="22" r="12" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="3 3.7" stroke-opacity=".5"/><circle cx="22" cy="22" r="3" fill="currentColor"/><path d="M22 7 L25 12 H19 Z" fill="currentColor"/></svg></span><span><span class="n">Constraint Roulette</span><span class="d">Each round draw a brutal random limit (no screens, half the team, one day) and re-solve under it; survivors become real ideas</span><span class="gf">Great for: Get unstuck · Build a feature</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Constraint"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" fill="none"><path d="M17 11 H 11 V 17"/><path d="M27 11 H 33 V 17"/><path d="M17 33 H 11 V 27"/><path d="M27 33 H 33 V 27"/></g><circle cx="22" cy="22" r="5" fill="currentColor" fill-opacity="0.25"/><circle cx="22" cy="22" r="2.6" fill="currentColor"/></svg></span><span><span class="n">✨ Invent a Constraint technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Constraint</span></span></label></div></section>
<h2 class="grouphdr" style="--c:#b15ad6">Introspective & Personal</h2>
<section data-cat="Introspective Delight" style="--c:#b15ad6"><h2>Introspective Delight<span class="cnt">8</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Inner Child Conference" data-cat="Introspective Delight" data-desc="Answer as your 7-year-old self: ask naive 'why why why' questions, chase wonder, ban every boring adult thought" data-good="personal|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="16" r="6" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 22 V31" stroke="currentColor" stroke-width="2" stroke-linecap="round"/><path d="M19 34 q3 -3 6 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/><g fill="currentColor"><circle cx="20" cy="15" r="1"/><circle cx="24" cy="15" r="1"/></g></svg></span><span><span class="n">Inner Child Conference</span><span class="d">Answer as your 7-year-old self: ask naive 'why why why' questions, chase wonder, ban every boring adult thought</span><span class="gf">Great for: Personal / life · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Shadow Work Mining" data-cat="Introspective Delight" data-desc="Name what you're avoiding, resisting, or scared of about this — then dig there for the buried insight" data-good="personal|diagnosis" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="22" r="12" fill="none" stroke="currentColor" stroke-width="2"/><path d="M22 10 a12 12 0 0 1 0 24 z" fill="currentColor" fill-opacity=".85"/></svg></span><span><span class="n">Shadow Work Mining</span><span class="d">Name what you're avoiding, resisting, or scared of about this — then dig there for the buried insight</span><span class="gf">Great for: Personal / life · Diagnose</span></span></label><label class="tech"><input type="checkbox" data-name="Values Archaeology" data-cat="Introspective Delight" data-desc="Keep asking 'why do I care?' until you hit bedrock: the non-negotiable value secretly steering the choice" data-good="personal|strategy" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2"><path d="M10 16 h24" stroke-opacity=".4"/><path d="M10 22 h24" stroke-opacity=".6"/></g><path d="M22 24 L16 30 L22 36 L28 30 Z" fill="currentColor"/></svg></span><span><span class="n">Values Archaeology</span><span class="d">Keep asking 'why do I care?' until you hit bedrock: the non-negotiable value secretly steering the choice</span><span class="gf">Great for: Personal / life · Strategy</span></span></label><label class="tech"><input type="checkbox" data-name="Future Self Interview" data-cat="Introspective Delight" data-desc="Interview your wise 80-year-old self about this problem and write down the advice they give you" data-good="personal" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 10 H30 L24 22 L30 34 H14 L20 22 Z"/></g><path d="M18 14 H26" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Future Self Interview</span><span class="d">Interview your wise 80-year-old self about this problem and write down the advice they give you</span><span class="gf">Great for: Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Body Wisdom Dialogue" data-cat="Introspective Delight" data-desc="Scan for the tension, flutter, or gut pull each option triggers; let the body's yes/no drive the ideas" data-good="personal" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M22 33 C12 26 9 19 13.5 15 C17 12 21 14 22 17 C23 14 27 12 30.5 15 C35 19 32 26 22 33 Z" fill="currentColor" fill-opacity=".22"/><path d="M22 33 C12 26 9 19 13.5 15 C17 12 21 14 22 17 C23 14 27 12 30.5 15 C35 19 32 26 22 33 Z" fill="none" stroke="currentColor" stroke-width="2"/></svg></span><span><span class="n">Body Wisdom Dialogue</span><span class="d">Scan for the tension, flutter, or gut pull each option triggers; let the body's yes/no drive the ideas</span><span class="gf">Great for: Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Permission Giving" data-cat="Introspective Delight" data-desc="Write yourself an explicit permission slip to think the forbidden, impossible thought — then think it out loud" data-good="personal|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="10" y="14" width="24" height="16" rx="2.5" fill="none" stroke="currentColor" stroke-width="2"/><path d="M15 23 L19 27 L28 17" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span><span class="n">Permission Giving</span><span class="d">Write yourself an explicit permission slip to think the forbidden, impossible thought — then think it out loud</span><span class="gf">Great for: Personal / life · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Secret Wish Confession" data-cat="Introspective Delight" data-desc="Whisper the embarrassing thing you secretly want here but won't admit, then build the idea honoring it" data-good="personal" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="13" y="20" width="18" height="14" rx="2.5" fill="currentColor" fill-opacity=".22"/><rect x="13" y="20" width="18" height="14" rx="2.5" fill="none" stroke="currentColor" stroke-width="2"/><path d="M16.5 20 v-3 a5.5 5.5 0 0 1 11 0 v3" fill="none" stroke="currentColor" stroke-width="2"/></svg></span><span><span class="n">Secret Wish Confession</span><span class="d">Whisper the embarrassing thing you secretly want here but won't admit, then build the idea honoring it</span><span class="gf">Great for: Personal / life</span></span></label><label class="tech"><input type="checkbox" data-name="Mood Weather Report" data-cat="Introspective Delight" data-desc="Name the inner weather right now (fog, storm, sun) and let that exact emotional climate generate the ideas" data-good="personal|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="17" cy="17" r="4.5" fill="currentColor" fill-opacity=".5"/><path d="M22 30 a5 5 0 0 1 0.5 -10 a6 6 0 0 1 11 2.5 a4 4 0 0 1 -1.5 7.5 z" fill="none" stroke="currentColor" stroke-width="2" stroke-linejoin="round"/></svg></span><span><span class="n">Mood Weather Report</span><span class="d">Name the inner weather right now (fog, storm, sun) and let that exact emotional climate generate the ideas</span><span class="gf">Great for: Personal / life · Get unstuck</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Introspective Delight"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><circle cx="22" cy="13.5" r="4" fill="currentColor"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31 Z" fill="currentColor" fill-opacity="0.22"/><path d="M10.5 31 C 12.5 23, 31.5 23, 33.5 31" stroke="currentColor" stroke-width="1.7" fill="none"/><path d="M13.5 30 C 16 26.5, 20 25.5, 22 25.5 C 24 25.5, 28 26.5, 30.5 30" stroke="currentColor" stroke-width="1.5" fill="none" stroke-opacity="0.6"/></svg></span><span><span class="n">✨ Invent a Introspective Delight technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Introspective Delight</span></span></label></div></section>
<section data-cat="Collaborative" style="--c:#15a3a3"><h2>Collaborative<span class="cnt">8</span></h2><div class="grid"><label class="tech"><input type="checkbox" data-name="Yes And Building" data-cat="Collaborative" data-desc="Never negate; each person opens with "Yes, and..." and adds to the last idea, stacking a chain of accepted additions" data-good="novel|unstuck|planning" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="currentColor"><rect x="8" y="27" width="12" height="8" rx="1.5" fill-opacity=".8"/><rect x="14" y="19" width="12" height="8" rx="1.5" fill-opacity=".5"/><rect x="20" y="11" width="12" height="8" rx="1.5"/></g></svg></span><span><span class="n">Yes And Building</span><span class="d">Never negate; each person opens with "Yes, and..." and adds to the last idea, stacking a chain of accepted additions</span><span class="gf">Great for: Novel concept · Get unstuck · Planning</span></span></label><label class="tech"><input type="checkbox" data-name="Brain Writing Round Robin" data-cat="Collaborative" data-desc="Everyone writes ideas silently, then passes their sheet; you build on whatever lands in front of you, round after round" data-good="novel|feature" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M31 16 A10 10 0 1 0 32.5 22"/><path d="M31 10 L31.5 16.3 L25 16.5"/></g></svg></span><span><span class="n">Brain Writing Round Robin</span><span class="d">Everyone writes ideas silently, then passes their sheet; you build on whatever lands in front of you, round after round</span><span class="gf">Great for: Novel concept · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Random Stimulation" data-cat="Collaborative" data-desc="Pull a random word or image and force a link to the problem: "how does THIS spark a solution?"" data-good="unstuck|novel" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="11" width="22" height="22" rx="4" fill="none" stroke="currentColor" stroke-width="2"/><g fill="currentColor"><circle cx="17" cy="17" r="1.8"/><circle cx="27" cy="17" r="1.8"/><circle cx="22" cy="22" r="1.8"/><circle cx="17" cy="27" r="1.8"/><circle cx="27" cy="27" r="1.8"/></g></svg></span><span><span class="n">Random Stimulation</span><span class="d">Pull a random word or image and force a link to the problem: "how does THIS spark a solution?"</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech"><input type="checkbox" data-name="Role Playing" data-cat="Collaborative" data-desc="Each person speaks as a different stakeholder, voicing what that role wants, fears, and would demand of the idea" data-good="strategy|personal|feature" data-prov="classic"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><rect x="11" y="9" width="22" height="26" rx="3" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="22" cy="19" r="4" fill="currentColor"/><path d="M15.5 30 c2 -4.5 11 -4.5 13 0" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"/></svg></span><span><span class="n">Role Playing</span><span class="d">Each person speaks as a different stakeholder, voicing what that role wants, fears, and would demand of the idea</span><span class="gf">Great for: Strategy · Personal / life · Build a feature</span></span></label><label class="tech"><input type="checkbox" data-name="Ideation Relay Race" data-cat="Collaborative" data-desc="30-second turns, no pausing: add one idea, slap it to the next person, keep the baton moving before anyone overthinks" data-good="unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="31" x2="27" y2="16"/><line x1="8" y1="22" x2="14" y2="22" stroke-opacity=".5"/><line x1="8" y1="27" x2="13" y2="27" stroke-opacity=".35"/></g><circle cx="29" cy="14" r="3.4" fill="currentColor"/></svg></span><span><span class="n">Ideation Relay Race</span><span class="d">30-second turns, no pausing: add one idea, slap it to the next person, keep the baton moving before anyone overthinks</span><span class="gf">Great for: Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Idea Hot Potato" data-cat="Collaborative" data-desc="One idea gets tossed around the circle; each catcher must mutate it in 10 seconds before passing, no repeats allowed" data-good="unstuck" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M11 31 Q22 8 33 31" fill="none" stroke="currentColor" stroke-width="2" stroke-dasharray="2 3.5" stroke-linecap="round"/><circle cx="22" cy="12.5" r="4.2" fill="currentColor"/></svg></span><span><span class="n">Idea Hot Potato</span><span class="d">One idea gets tossed around the circle; each catcher must mutate it in 10 seconds before passing, no repeats allowed</span><span class="gf">Great for: Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Steal And Upgrade" data-cat="Collaborative" data-desc="Pick a neighbor's idea you envy, claim it out loud, then make it visibly better before handing it back improved" data-good="novel|unstuck" data-prov="signature"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 33 V14"/><path d="M13 21 L20 14 L27 21"/></g><path d="M30 27 l1 2.6 2.6 1 -2.6 1 -1 2.6 -1 -2.6 -2.6 -1 2.6 -1 z" fill="currentColor"/></svg></span><span><span class="n">Steal And Upgrade</span><span class="d">Pick a neighbor's idea you envy, claim it out loud, then make it visibly better before handing it back improved</span><span class="gf">Great for: Novel concept · Get unstuck</span></span></label><label class="tech"><input type="checkbox" data-name="Fold The Paper" data-cat="Collaborative" data-desc="Each person adds one line to a hidden drawing or sentence, sees only the previous fragment, then unfold the surreal whole" data-good="unstuck|novel" data-prov="playful"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><path d="M13 16 L21 12 V28 L13 32 Z" fill="currentColor" fill-opacity=".22"/><path d="M21 12 L29 16 V32 L21 28 Z" fill="currentColor" fill-opacity=".45"/><path d="M13 16 L21 12 L29 16 M21 12 V28" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/></svg></span><span><span class="n">Fold The Paper</span><span class="d">Each person adds one line to a hidden drawing or sentence, sees only the previous fragment, then unfold the surreal whole</span><span class="gf">Great for: Get unstuck · Novel concept</span></span></label><label class="tech invent"><input type="checkbox" data-invent="Collaborative"><span class="ic2"><svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/><g stroke="currentColor" stroke-width="1.8"><line x1="14" y1="16" x2="30" y2="16"/><line x1="14" y1="16" x2="22" y2="30"/><line x1="30" y1="16" x2="22" y2="30"/></g><g fill="currentColor" fill-opacity="0.22"><circle cx="14" cy="16" r="4.6"/><circle cx="30" cy="16" r="4.6"/><circle cx="22" cy="30" r="4.6"/></g><g fill="currentColor"><circle cx="14" cy="16" r="2.4"/><circle cx="30" cy="16" r="2.4"/><circle cx="22" cy="30" r="2.4"/></g></svg></span><span><span class="n">✨ Invent a Collaborative technique</span><span class="d">Make up a brand-new technique on the fly, in the spirit of Collaborative</span></span></label></div></section>
</main>
<footer>BMad Method · Brainstorming</footer>
<script>
(function(){
var $ = function(id){ return document.getElementById(id); };
var all = Array.prototype.slice;
var boxes = all.call(document.querySelectorAll('input[type=checkbox]'));
var techBoxes = boxes.filter(function(b){ return b.dataset.name; }); // real technique cards
var inventBoxes = boxes.filter(function(b){ return b.dataset.invent; }); // per-category "invent in the spirit of" cards
var header = document.querySelector('header');
var sections = all.call(document.querySelectorAll('section'));
var state = { mode: 'Facilitator', rand: 0, inv: 0, ai: 0 };
var MODE_HINTS = {
'Facilitator': 'A forcing function for your ideas — I prompt and push, but never supply them.',
'Creative Partner': 'We riff together — I facilitate and add ideas too, each logged as yours or mine.',
'Ideate for me': 'I run the whole session myself, then show you the result and offer to keep going.'
};
function setHint(){ $('modehint').textContent = MODE_HINTS[state.mode] || ''; }
var themeBtn = $('theme');
function setThemeIcon(){ themeBtn.textContent = document.documentElement.getAttribute('data-theme') === 'dark' ? '☀' : '☾'; }
themeBtn.addEventListener('click', function(){
var next = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', next);
try { localStorage.setItem('bmad-theme', next); } catch(e){}
setThemeIcon();
});
all.call(document.querySelectorAll('.mode')).forEach(function(b){
b.addEventListener('click', function(){
all.call(document.querySelectorAll('.mode')).forEach(function(m){ m.classList.remove('on'); });
b.classList.add('on');
state.mode = b.dataset.mode;
setHint();
});
});
all.call(document.querySelectorAll('[data-step]')).forEach(function(btn){
btn.addEventListener('click', function(){
var k = btn.dataset.step, d = parseInt(btn.dataset.d, 10);
state[k] = Math.max(0, state[k] + d);
update();
});
});
// Category chips are jump-nav: click one to smooth-scroll its section into view,
// offsetting by the sticky header's height so the heading isn't hidden beneath it.
all.call(document.querySelectorAll('.chip')).forEach(function(chip){
chip.addEventListener('click', function(){
var sec = null;
for (var i = 0; i < sections.length; i++){ if (sections[i].dataset.cat === chip.dataset.cat){ sec = sections[i]; break; } }
if (!sec){ return; }
var top = sec.getBoundingClientRect().top + window.pageYOffset - header.offsetHeight - 8;
window.scrollTo({ top: top, behavior: 'smooth' });
});
});
boxes.forEach(function(b){ b.addEventListener('change', update); });
// A `classic` technique appears twice (lead "Proven & Professional" group + its home
// category), so de-dupe checked picks by name; the lead copy carries data-lead.
function checkedTech(){
var seen = {}, out = [];
techBoxes.forEach(function(b){
if (!b.checked || seen[b.dataset.name]) { return; }
seen[b.dataset.name] = 1;
out.push(b);
});
return out;
}
function checkedInvent(){ return inventBoxes.filter(function(b){ return b.checked; }); }
function update(){
// rand can't exceed what the pool can supply — keep the counter honest with the draw
if (state.rand > randomPool().length){ state.rand = randomPool().length; }
$('pickN').textContent = checkedTech().length;
$('randN').textContent = state.rand;
$('invN').textContent = state.inv;
$('aiN').textContent = state.ai;
var total = checkedTech().length + state.rand + state.inv + checkedInvent().length + state.ai;
var t = $('total');
t.textContent = 'Total ' + total + ' · 3–4 is the sweet spot';
t.classList.toggle('warn', total > 5);
}
// "Great for" goal filter: clicking a goal narrows visible cards to those tagged with it.
var goalBtns = all.call(document.querySelectorAll('.goal'));
function activeGoals(){ return goalBtns.filter(function(b){ return b.classList.contains('on'); }).map(function(b){ return b.dataset.goal; }); }
function applyFilter(){
var act = activeGoals();
all.call(document.querySelectorAll('label.tech')).forEach(function(lab){
var inp = lab.querySelector('input');
if (inp.dataset.invent){ return; } // invent cards aren't goal-tagged — always visible
var good = (inp.dataset.good || '').split('|');
var show = !act.length || act.some(function(g){ return good.indexOf(g) >= 0; });
lab.classList.toggle('hidden', !show);
});
}
goalBtns.forEach(function(b){ b.addEventListener('click', function(){ b.classList.toggle('on'); applyFilter(); }); });
function randomPool(){
var picked = {};
checkedTech().forEach(function(b){ picked[b.dataset.name] = 1; });
// draw from unchecked, non-lead copies, skipping anything already picked
return techBoxes.filter(function(b){ return !b.checked && !b.dataset.lead && !picked[b.dataset.name]; });
}
function sample(arr, n){
var a = arr.slice(), out = [];
while (out.length < n && a.length){ out.push(a.splice(Math.floor(Math.random() * a.length), 1)[0]); }
return out;
}
function compose(){
var picks = checkedTech().map(function(b){ return { n: b.dataset.name, c: b.dataset.cat, d: b.dataset.desc, r: false }; });
var rnd = sample(randomPool(), state.rand).map(function(b){ return { n: b.dataset.name, c: b.dataset.cat, d: b.dataset.desc, r: true }; });
var techs = picks.concat(rnd);
var L = ["Let's run my brainstorming session.", "", 'Facilitation mode: ' + state.mode + '.'];
if (techs.length){
L.push("", 'Techniques to use:');
techs.forEach(function(t, i){
L.push((i + 1) + '.' + (t.r ? ' (random pick)' : '') + ' ' + t.n + ' · ' + t.c);
L.push(' ' + t.d);
});
}
var extra = [];
if (state.inv > 0){ extra.push('invent ' + state.inv + ' brand-new technique' + (state.inv > 1 ? 's' : '') + ' on the fly'); }
checkedInvent().forEach(function(b){ extra.push('invent 1 new technique in the spirit of ' + b.dataset.invent); });
if (state.ai > 0){ extra.push('you choose ' + state.ai + ' more technique' + (state.ai > 1 ? 's' : '') + ' that fit my goal'); }
if (extra.length){ L.push("", 'Then: ' + extra.join('; and ') + '.'); }
if (!techs.length && !extra.length){
L.push("", state.mode === 'Ideate for me'
? 'Run the whole session yourself — pick the techniques, generate the ideas, then show me the result.'
: 'Help me choose 3–4 techniques to start.');
}
return L.join('\n');
}
function fallbackCopy(t){
var ta = document.createElement('textarea');
ta.value = t; ta.style.position = 'fixed'; ta.style.opacity = '0';
document.body.appendChild(ta); ta.focus(); ta.select();
var ok = false;
try { ok = document.execCommand('copy'); } catch(e){ ok = false; }
document.body.removeChild(ta);
return ok;
}
function flash(ok, text){
var b = $('banner');
b.classList.toggle('fail', !ok);
b.innerHTML = ok
? '✓ Copied! Now paste it into the chat to start your session.'
: '⚠ Couldn’t reach the clipboard — copy the text in the box, then paste it into the chat.';
b.classList.add('show');
setTimeout(function(){ b.classList.remove('show'); }, 4500);
// Last resort on a hard failure: a prefilled, selectable prompt so the text is never lost.
if (!ok){ window.prompt('Copy this, then paste it into the chat:', text); }
}
$('copy').addEventListener('click', function(){
var text = compose();
if (navigator.clipboard && navigator.clipboard.writeText){
navigator.clipboard.writeText(text).then(
function(){ flash(true, text); },
function(){ flash(fallbackCopy(text), text); }
);
} else { flash(fallbackCopy(text), text); }
});
setHint();
setThemeIcon();
update();
})();
</script>
</body>
</html>
customize.toml
# DO NOT EDIT -- overwritten on every update.
#
# Workflow customization surface for bmad-brainstorming.
#
# Override files (not edited here):
# {project-root}/_bmad/custom/bmad-brainstorming.toml (team)
# {project-root}/_bmad/custom/bmad-brainstorming.user.toml (personal)
[workflow]
# --- Configurable below. Overrides merge per BMad structural rules: ---
# scalars: override wins • arrays: append
# Steps to run before the standard activation (config load, greet).
# Use for pre-flight loads, compliance checks, etc.
activation_steps_prepend = []
# Steps to run after greet but before facilitation begins.
# Use for context-heavy setup that should happen once the user has been acknowledged.
activation_steps_append = []
# Persistent facts the facilitator keeps in mind for the whole session
# (domain constraints, house rules, stylistic guardrails). Each entry is a
# literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed
# path/glob whose contents are loaded as facts. Empty by default — repo-wide context
# belongs in AGENTS.md (see bmad-project-context), which every skill already sees. Use
# this for context only the facilitator needs, loaded on demand rather than carried as
# constant memory (e.g. `file:{project-root}/**/project-context.md` if you keep one).
persistent_facts = []
# The technique library loaded on demand during the session. Swap the path in
# team/user TOML to ship a different or extended catalog of creative methods.
# Kept `{skill-root}`-anchored so it resolves regardless of the working directory
# (brain.py is always invoked with `--file {workflow.brain_methods}`).
brain_methods = "{skill-root}/assets/brain-methods.csv"
# Techniques the facilitator should reach for first. When proposing a method
# (the AI-led default), it prefers these where they fit the goal before ranging
# wider. Names should match an entry in the library or in additional_techniques.
# Append-merges, so a team list and a personal list both contribute. Empty = no
# preference; the facilitator chooses purely on fit.
#
# Example (set in team/user override TOML):
# favorite_techniques = ["SCAMPER", "Six Thinking Hats", "First Principles"]
favorite_techniques = []
# Extra techniques — and whole new categories — merged into the catalog the
# facilitator chooses from, without editing the shipped CSV. Each entry mirrors
# the library's shape (category, technique_name, description); a new category is
# just a category value the CSV doesn't have. Entries append, so teams and users
# can each grow the library. The facilitator treats these as first-class
# alongside brain_methods across every flow — facilitator-chosen, browse,
# category draws, and inventive.
#
# Example (set in team/user override TOML):
# [[workflow.additional_techniques]]
# category = "domain-specific"
# technique_name = "Regulatory Inversion"
# description = "Start from the compliance constraint and brainstorm what becomes possible only because of it — turn the rule into a generative frame rather than a limit."
additional_techniques = []
# Session output location. The running log and any final artifacts land inside
# `{output_dir}/{output_folder_name}/`. `{topic_slug}` is filled from the session
# topic so each topic gets its own folder — a user can brainstorm several topics
# without collision. The resume check globs `{output_dir}/*/.memlog.md`.
output_dir = "{output_folder}/brainstorming"
output_folder_name = "brainstorm-{topic_slug}-{date}"
# Executed when the session completes (after artifacts are produced and the user
# has the paths). Accepts a string scalar (single instruction) or an array of
# instructions executed in order. Empty for none.
on_complete = ""
# External-handoff routing. Natural-language directives applied after artifacts
# are produced, to route them beyond local files (Confluence, Notion, Drive,
# etc.). Each entry names the MCP tool, the destination, and the fields it needs.
# URLs/IDs returned are surfaced to the user. If a named tool is unavailable at
# runtime, the handoff is skipped and flagged; local files always exist. Empty
# by default.
#
# Example (set in team/user override TOML):
# "After artifacts are produced, upload brainstorm.html to Confluence via corp:confluence_upload (space_key='IDEAS', parent_page='Brainstorms')."
external_handoffs = []
module-manifest.toml
module = "toolbox"
version = "6.13.0-next"
update_source = "github:bmad-code-org/BMAD-METHOD/skills"
knowledge = "`references/help.md` in the `bmad` skill"
references/converge.md
# Converging: Narrow & Decide
Load this when divergence is spent and the user wants to narrow the field — or asks to "decide," "prioritize," "pick," or "make it real." The whole catalog is *divergent* by design (it generates); this is the deliberate opposite phase, and keeping the two apart is the point. Never run convergence while ideas are still flowing, and never let it leak into a generating batch — premature judgment is what kills good ideas. `{doc_workspace}/.memlog.md` is the canonical record; everything here works from it.
**Mode holds.** In **Facilitator** you run the convergence *on the user's verdicts* — you structure and prompt, they judge; never rank for them. In **Creative Partner** you weigh in too, each call logged by author. In **Ideate for me** you converge yourself and show the result, then offer to keep going.
## How to run it
First, reflect the field back: pull the live candidates from the memlog (include the odd and buried ones, not just the recent obvious ones) so there's a concrete set to work on. Then pick **one** convergence move that fits the goal — don't hand the user a menu of methods; choose the one that suits *this* decision and name it. Run it to a result, log the outcome, and stop when a clear short-list or single direction emerges.
Pick by what the decision needs:
- **Affinity Clustering** — when there are many scattered ideas: group them into themes, name each cluster, and surface the through-line. Often the right *first* move, to turn a pile into a handful.
- **Impact–Effort** — when the goal is action: place each candidate on impact vs effort; harvest high-impact / low-effort first, park the rest.
- **NUF Test** — when novelty matters: score each New, Useful, Feasible (1–10 each); the totals expose the quiet winners and the dazzling-but-doomed.
- **Forced Ranking / Dot Vote** — when you just need a ranked top-N: make the ideas compete, no ties; (a literal dot-vote when it's genuinely a group).
- **PMI (Plus / Minus / Interesting)** — when one strong candidate needs pressure-testing before commitment: list its pluses, minuses, and the merely-interesting, then judge.
- **MoSCoW** — when scoping a build: sort into Must / Should / Could / Won't-this-time.
Log the surviving directions and the reasoning with `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type decision --text "<one-line gist>"` (use `--by` in Creative Partner mode). Two or three convergence moves chained is fine (e.g. cluster → score the clusters); more than that is usually over-processing.
## Then finalize
Once a short-list or direction is settled, **load `references/finalize.md`** and run it last — synthesis, `status: complete`, and artifacts build on the decisions you just logged. Convergence narrows; finalize captures and ships. Do not set `status: complete` here — that belongs to finalize.
references/finalize.md
# Wrap-Up: Synthesis & Artifacts
Load this when the user signals they're spent or the topic is mined out. `{doc_workspace}/.memlog.md` is the canonical record of the session — everything here derives from it.
## Synthesis
In Facilitator mode this is the one place your own creative contribution is welcome; in Creative Partner and Ideate-for-me you've been contributing all along, so just keep going. Run it in two moves, in order:
1. **Hand them the mirror first.** Reflect a vivid sampling of *their* ideas back — deliberately include the odd, random, or buried ones from earlier, not just the recent obvious ones (in Creative Partner mode the `(... by user)` tags tell you which were theirs). Ask what they see now: conclusions, synergies, themes, the few that actually matter. Let them connect first; their own pattern-recognition is the point.
2. **Then add the connections they would miss.** Lean in creatively — not new raw ideas, but the non-obvious links: this idea from technique one quietly solves that tension from technique four; these three are one idea wearing three hats; this wildcard is the real breakthrough.
Record the insights and chosen directions with `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type insight --text "<insights + chosen directions>"`. **Then run `uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete`** — the session is done and must stop being offered for resume. Do this even if the user declines every artifact below.
## Artifacts
In **Ideate for me** (and headless), the imaginative HTML keepsake is the deliverable you promised — produce it automatically, no asking; the other artifacts below stay opt-in. In **Facilitator** and **Creative Partner**, every artifact is opt-in: each is a fresh, token-expensive generation, so ask what they want, recommend the HTML keepsake as the default, and generate only what they choose. Everything derives from the log, so nothing is lost by deferring or skipping.
**Delegate each artifact to a subagent.** By now the main context is full of the whole session — but the memlog holds everything, so the subagent doesn't need that context. Spawn one per requested artifact, telling it only: the spec below, the memlog path `{doc_workspace}/.memlog.md` (its sole source — read it in full), the output path, and "return ONLY the written file path." This keeps the heavy generation out of the main thread and proves the memlog is genuinely the canonical source. (Subagents can't spawn subagents — run these from here.)
- **Imaginative HTML keepsake (recommended default).** A single self-contained `brainstorm.html` in `{doc_workspace}` — a genuine creative artifact, not a report poured into a template. There is no template on purpose: let *this* session's subject, energy, and whimsy drive the visual language (a children's game and a supply-chain session should not look alike). Give each technique its own treatment, invent visualizations that fit the ideas and techniques, and render the synthesis as the climax. Inline all CSS and any JS; no external dependencies. Open it once complete.
- **Intent doc.** A succinct `brainstorm-intent.md` — the chosen and critical discoveries only, structured to drop straight into a downstream skill (`bmad-product-brief`, `bmad-prd`) as clean input, with none of the report's bloat - token usage matters and it must really be on point. Confirm what the user wants to capture as the intent from the overall findings as there may be many divergent discoveries (unless in headless mode, then take your best educated stance).
- **Offer other options they might want from it also based on context** — a pitch, a one-pager, a task list — produced from the same source. These can be slide decks, html, markdown - again be creative and offer really interesting quality options based on perceived user needs while asking them also to offer any other ideas.
If the session used invented techniques, offer to save a keeper into `{workflow.additional_techniques}` via `bmad-customize` user preferences.
After producing what they chose, offer them ideas for deep-dive brainstorming new sessions, offer to fully extrapolate any ideas into an html report (autonomously brainstorm on their behalf), and most importantly: execute each `{workflow.external_handoffs}` instruction. Then share the artifact paths (and any handoff destinations), invoke `bmad-help` to suggest where this leads next in the BMad ecosystem, let them know if they feel a produced intent is detailed enough they could jump right into passing it to bmad-spec or any other analysis tool (outlined from bmad-help) and run `{workflow.on_complete}` if non-empty.
references/headless.md
# Headless Mode
Load this file ONLY when bmad-brainstorming is invoked headless. It is quarantined here on purpose: headless is the single context in which you generate ideas yourself, which is the exact inverse of the interactive Stance. Loading it in a normal session would corrupt the facilitation. Follow it for the whole run.
## Detection
**If a human is sending messages in this session, you are interactive — no payload shape or phrasing overrides that.** Headless requires the *absence* of an interactive user. It is in effect only when one of these unambiguous machine signals holds:
- the caller sets a `headless: true` flag (or the equivalent argument the harness exposes),
- the invocation comes from another skill or a non-interactive runner (no TTY, no user message stream),
- `{workflow.activation_steps_prepend}` includes an entry that explicitly declares headless.
When in doubt, you are interactive — a present human asking you to "brainstorm X and give me the HTML" is a normal interactive opening, not a headless trigger. Facilitate them; do not brainstorm for them.
## The inversion
There is no user to draw ideas out of, so you become the brainstormer. Run a real divergent session against the supplied topic: discover techniques with `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} list --all` (the whole catalog is fine here — you are generating, not pacing a user; add `show "<name>"` for a technique's full method on demand), plus any `{workflow.additional_techniques}`, preferring `{workflow.favorite_techniques}` where they fit; work them, and **shift the creative domain every ~10 ideas** exactly as the interactive Stance demands — technical, then experiential, then business, then failure modes, then wildcards. Push past the obvious; the same quantity ambition (aim past 100) and anti-clustering discipline apply. The only thing that changes is that the ideas are now yours to generate. This relaxation is scoped entirely to this file — it never applies to interactive sessions.
## Inputs the caller is expected to provide
Free-form structured payload in the first message; provide what applies:
- `topic` — what to brainstorm. Required. If absent and uninferable, halt `blocked`.
- `goal` — desired outcome / framing, if any.
- `techniques` — specific methods to use; otherwise you choose fitting ones from the library.
- `context` — file paths or text to ground the session (problem statement, prior notes, brief).
- `doc_workspace` — a specific run folder; otherwise bind the default `{workflow.output_dir}/{workflow.output_folder_name}/`.
- `artifacts` — which outputs to produce: `html`, `intent`, or both. Default: both.
## Run
1. Bind `{doc_workspace}` and create the memlog with `uv run {project-root}/_bmad/scripts/memlog.py init --workspace {doc_workspace} --field topic="<topic>" [--field goal="<goal>"]`. It remains the canonical source every artifact derives from.
2. Run the divergent session per **The inversion**, capturing each idea with `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type idea --text "<idea>"` as it lands, and marking each technique switch with `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type technique --text "started <name>"`.
3. Synthesize: surface the conclusions, connections, and the few directions that matter; record them with `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type insight --text "<insights>"`, then run `uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete`.
4. Produce the requested artifacts from the log — `brainstorm.html` (the imaginative, self-contained, no-template report) and/or the succinct `brainstorm-intent.md` — the same artifacts `references/finalize.md` describes, delegating each to a subagent that reads the log as its sole source. (Headless produces the `artifacts` payload directly; it does not ask, unlike the interactive opt-in.)
5. Execute each entry in `{workflow.external_handoffs}` (capture returned URLs/IDs into the JSON `external_handoffs` array; skip and flag unavailable tools — local files always exist). Then run `{workflow.on_complete}` if non-empty.
Do not ask questions; do not greet. Record any assumption you made (a topic you had to infer, a goal you invented to frame the session) in `assumptions[]`.
## Return
End with a JSON status block. Use `complete` when the artifacts stand on their own, `partial` when produced but key inputs were inferred (e.g. topic was thin), `blocked` when no artifact was produced (e.g. no topic). Omit keys for artifacts not produced.
```json
{
"status": "complete",
"intent": "brainstorm",
"memlog": "{doc_workspace}/.memlog.md",
"html": "{doc_workspace}/brainstorm.html",
"intent_doc": "{doc_workspace}/brainstorm-intent.md",
"assumptions": [],
"external_handoffs": []
}
```
references/in-chat-techniques.md
# Choosing Techniques In Chat
Loaded only when the user won't use the composer page (no browser, headless, or they declined). Here you pick the batch in conversation. **3–4 is the sweet spot.** Present the four ways below — this is the one allowed menu — and wait for their pick.
- **Facilitator Chosen (default)** — from the goal, your `{workflow.favorite_techniques}`, and the `categories` map, name a batch of 3–4. Confirm exact names with a targeted `list --category` on only the categories you're drawing from; never enumerate the library to choose.
- **Browse** — send them to the composer page after all (`## Run a Session` in `SKILL.md`); they tick techniques and paste the result back, which carries each one's full name/category/description.
- **Category** — the user names 1–n categories; `random --category` draws the batch from them. No listing needed.
- **Inventive Flow** — invent at least 3 techniques, announce the order before the first, touch no script. Log each one's name + description so you can offer to save a keeper to `{workflow.additional_techniques}` (via `bmad-customize`) at wrap-up.
The library is large — never pull it whole into context. The only way in is the helper, always passing `--file {workflow.brain_methods}`. Subcommands of `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods}`:
- `categories` — names + counts; the cheap survey map.
- `list --category X [--category Y]` — the index (name + gist) for those categories. Bare `list` is refused by the script.
- `random --category X [...] -n 4` — draw a batch blind, listing nothing.
- `show "<name>"` — one technique's full method; call only the moment it is about to run.
- `html --out <path>` — write the composer page to a file (the Browse option above).
Treat `{workflow.additional_techniques}` as first-class entries (including new categories), preferring `{workflow.favorite_techniques}` where they fit. To include the additional techniques in any command, pass `--extra <json>` (a JSON list of `{category, technique_name, description}` objects). The `list` gist usually suffices to propose and run a technique; reach for `show` for deeper mechanics.
references/mode-autonomous.md
# Mode: Ideate For Me
The user handed you the topic and wants to see what you come up with on your own, then look at the result. You become the brainstormer — this is the one interactive mode where the ideas are yours to generate.
- **Run a real divergent session yourself.** If the user supplied techniques (e.g. a composed prompt pasted from the selector page), honor those first; otherwise pick and run techniques on your own (use `brain.py` as in `## Choosing Techniques`, but *you* choose — no menu for the user). Capture each idea to the memlog with `--type idea --by coach`, marking each technique switch with a `technique` entry, shifting the creative domain every ~10 ideas, aiming past 100. Push past the obvious.
- **Don't pepper the user with questions** — this is your run. One quick confirm of topic and goal up front is plenty.
- **When it's mined out, synthesize and produce the keepsake.** Go to `## Wrap-Up` (`references/finalize.md`): record the insights, mark the memlog complete, and **auto-generate the imaginative HTML keepsake — don't ask first; the keepsake is the result you promised to show them.** Offer the other artifacts (intent doc, etc.) after.
- **Then, because a human is here, offer to keep going together.** They may want to push an idea further or react to what you found — if so, switch into **Facilitator** or **Creative Partner** (load that frame), **record the switch in the memlog** so a resume restores the new stance — `uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key mode --value <facilitator|partner>` — and continue from the same memlog.
This is the interactive sibling of headless mode (`references/headless.md`): the same self-generation, but a person is present to receive the output and may continue. headless is the no-human, returns-JSON runner; this one greets, presents, and hands off.
references/mode-facilitator.md
# Mode: Facilitator
You are a forcing function for the user's creativity, never a source of ideas. The best version of this session ends with the user surprised by what *they* came up with — every idea in the memlog is theirs.
- **You do not supply ideas.** Your moves are questions, provocations, constraints, and reflections that make *the user* generate, while you steer within the chosen technique. When the well looks dry, don't fill it — change the technique, shift the angle, or push harder.
- **The one exception:** if the user *directly asks* for an idea, give exactly one as a spark, then hand the pen back. Reaching for that repeatedly is the signal to change technique, not to keep feeding ideas.
- This holds for the whole generative session; it relaxes only during synthesis at wrap-up (`references/finalize.md`).
Every idea you log is the user's, so no attribution is needed — log with `--type idea` (no `--by`).
Go to `## Choosing Techniques`.
references/mode-partner.md
# Mode: Creative Partner
You are still the facilitator — their creativity is the point, and they do the **majority** of the generating. But here you also play: you ride alongside and throw in your own ideas as sparks and yes-and fuel, so the two of you build a chain neither would alone. The energy is collaborative, not extractive — you feed off each other.
**Set it up first.** Before you start, tell the user how this mode works and that they stay in control: they can **reject any idea you offer, ask you to help more or less, and tell you how to brainstorm** — a technique to try, a tone, a direction to chase. You're a partner they can steer, not a script.
Hold the balance:
- **Their fire, your kindling.** After you offer an idea, hand the pen back with a question. Never run a string of your own while they go quiet.
- **"Yes, and" is the default move.** Take what they just said, build it one rung higher, then dare them to top you. Make them *want* to outdo you.
- **Offer real alternatives**, not leading questions — a genuine idea they can mutate or reject, an opening, never a conclusion.
- **Watch the ratio.** If you've contributed more than they have over the last few exchanges, you've slipped toward doing it *for* them — pull back to questions and constraints.
**Attribution is mandatory here.** Every idea entry records who it came from: `--by user` for theirs, `--by coach` for yours (e.g. `append --type idea --by coach --text "..."`). This keeps the record honest and lets the wrap-up hand *them* the mirror of what *they* generated.
Go to `## Choosing Techniques`.
references/resume.md
# Resuming a Session
Read the chosen `{doc_workspace}/.memlog.md` **in full** — the one time you read the memlog. Frontmatter restores topic, goal, status, and **mode**: reload that mode's frame (`mode-facilitator.md` / `mode-partner.md` / `mode-autonomous.md`) and hold it again. The body restores everything generated — entries in order, `technique` entries marking which lens was active, `by` tags marking authorship.
Reconstruct the picture, then reflect back where things stand (topic, what's already mined, which threads felt live) to re-establish shared state before continuing. Then continue per the mode's frame (appending to the same memlog) — or, if they're ready to land it, go to Wrap-Up (`references/finalize.md`).
scripts/brain.py
#!/usr/bin/env python3
# /// script
# requires-python = ">=3.11"
# ///
"""Serve the brainstorming technique library without loading it all into context.
The library is a CSV (category, technique_name, description, detail). `description`
is a short gist — enough to propose and run most techniques. `detail` is optional:
a path (relative to the CSV's directory) to a fuller instruction file for a technique
complex enough to warrant one. Only `show` resolves detail files, and only for the
technique asked for — so the heavy material never enters context until it is run.
Commands:
categories list category names + counts (the cheap entry point)
list --category C [...] the index (name + gist) for those categories
list --all the whole index at once — deliberate; large, avoid interactively
show NAME [NAME ...] full gist for each, inlining its detail file if it has one
random [--category C] [-n N] pick N at random (optionally within categories)
html --out PATH write the offline 'browse all' selection page to a file
`list` refuses to run with neither --category nor --all, and `html` writes to a file
rather than stdout: dumping the full catalog into context is a footgun, so reaching the
whole library at once must always be an explicit, deliberate choice.
`--extra PATH` merges a JSON overlay of additional techniques (customize.toml's
`additional_techniques`) into every command. An extra whose technique_name matches
a shipped row (case-insensitive) REPLACES it — retune a shipped technique; others
append, so custom techniques and whole new categories are first-class everywhere —
including the browse page and category draws. (Same overlay semantics as
bmad-advanced-elicitation's pick_methods.py.)
Default output is lean text for an LLM to read; pass --json for structured output.
"""
import argparse
import csv
import hashlib
import html
import json
import random
import sys
from pathlib import Path
DEFAULT_FILE = Path(__file__).resolve().parent.parent / "assets" / "brain-methods.csv"
FIELDS = ("category", "technique_name", "description", "detail", "provenance", "good_for", "audience")
# Optional columns beyond the original four — absent in older CSVs and in --extra
# overlays, so always read through .get/setdefault. `provenance` (classic|signature|
# playful) drives the "Proven & Professional" lead group; `good_for` (a |-separated
# list of goal tags) drives the browse page's goal filter; `audience` (solo|group|either)
# is advisory.
OPTIONAL_FIELDS = ("detail", "provenance", "good_for", "audience")
def load(file: Path) -> list[dict]:
# utf-8-sig: tolerate BOM-prefixed catalogs (Excel "CSV UTF-8", Notepad)
with open(file, newline="", encoding="utf-8-sig") as f:
rows = list(csv.DictReader(f))
for r in rows:
for k in FIELDS:
r.setdefault(k, "")
r[k] = (r.get(k) or "").strip()
return rows
def load_extra(file: Path) -> list[dict]:
"""Merge-in techniques from a JSON overlay — a list of
{category, technique_name, description[, detail]} objects. This is how
customize.toml's `additional_techniques` become first-class across *every*
subcommand (categories/list/random/show/html), so the browse page and
category draws include them too, not just the in-chat flows."""
data = json.loads(file.read_text(encoding="utf-8-sig"))
if not isinstance(data, list):
raise ValueError("--extra must be a JSON array of objects")
rows = []
for item in data:
if not isinstance(item, dict):
raise ValueError(f"each --extra entry must be a JSON object, got: {item!r}")
rows.append(
{
"category": str(item.get("category", "")).strip(),
"technique_name": str(item.get("technique_name", "")).strip(),
"description": str(item.get("description", "")).strip(),
"detail": str(item.get("detail") or "").strip(),
"provenance": str(item.get("provenance") or "").strip(),
"good_for": str(item.get("good_for") or "").strip(),
"audience": str(item.get("audience") or "").strip(),
}
)
return rows
def merge_extra(rows: list[dict], extras: list[dict]) -> list[dict]:
"""Extras replace a catalog row with the same technique_name (case-insensitive),
otherwise append — the same overlay semantics as pick_methods.py, so
customize.toml additional_* entries behave identically across sibling skills."""
merged = list(rows)
index = {r["technique_name"].lower(): i for i, r in enumerate(merged)}
for e in extras:
key = e["technique_name"].lower()
if key in index:
merged[index[key]] = e
else:
index[key] = len(merged)
merged.append(e)
return merged
def categories(rows: list[dict]) -> list[tuple[str, int]]:
counts: dict[str, int] = {}
for r in rows:
counts[r["category"]] = counts.get(r["category"], 0) + 1
return sorted(counts.items())
def filter_cats(rows: list[dict], cats: list[str] | None) -> list[dict]:
if not cats:
return rows
wanted = {c.lower() for c in cats}
return [r for r in rows if r["category"].lower() in wanted]
def find(rows: list[dict], names: list[str]) -> tuple[list[dict], list[str]]:
by_name = {r["technique_name"].lower(): r for r in rows}
found, missing = [], []
for n in names:
r = by_name.get(n.strip().lower())
(found if r else missing).append(r if r else n)
return found, missing
def resolve_detail(row: dict, csv_dir: Path) -> str | None:
"""Return the contents of a row's detail file, or None if there is no detail
(or the file is missing — a missing file is reported to stderr, not fatal)."""
if not row.get("detail"):
return None
path = (csv_dir / row["detail"]).resolve()
if not path.is_file():
print(f"# detail file not found for {row['technique_name']}: {row['detail']}", file=sys.stderr)
return None
return path.read_text(encoding="utf-8").strip()
def fmt_categories(cats: list[tuple[str, int]], as_json: bool) -> str:
if as_json:
return json.dumps([{"category": c, "count": n} for c, n in cats])
return "\n".join(f"{c}\t{n}" for c, n in cats)
def fmt_list(rows: list[dict], as_json: bool) -> str:
if as_json:
return json.dumps([{k: r[k] for k in ("category", "technique_name", "description")} for r in rows])
return "\n".join(f"{r['category']}\t{r['technique_name']}\t{r['description']}" for r in rows)
def fmt_show(rows: list[dict], csv_dir: Path, as_json: bool) -> str:
if as_json:
out = []
for r in rows:
d = resolve_detail(r, csv_dir)
entry = {k: r[k] for k in ("category", "technique_name", "description")}
if d:
entry["detail"] = d
out.append(entry)
return json.dumps(out)
blocks = []
for r in rows:
block = f"## {r['technique_name']} [{r['category']}]\n{r['description']}"
d = resolve_detail(r, csv_dir)
if d:
block += f"\n\n{d}"
blocks.append(block)
return "\n\n".join(blocks)
def pretty(cat: str) -> str:
"""Turn a category slug (e.g. 'speculative_future') into a display name."""
return cat.replace("_", " ").replace("-", " ").title()
# --- card visuals: a crafted duotone icon + hue per category, plus a per-technique icon ---
# The hues and SVG glyphs are *data*, not logic: they live in the icon sidecar
# (assets/brain-icons.json) so the catalog's visuals can be edited without touching code.
# It maps category slug -> {hue, glyph} and technique name -> svg (inner markup, drawn in
# `currentColor` which the CSS sets to the category hue; the shared CHIP frame is added by
# the renderer). Anything missing falls back here — an unknown category gets a hash-derived
# hue + generic glyph, an unknown/not-yet-iconed technique a neutral mark — so custom
# catalogs always render.
ICON_FILE = DEFAULT_FILE.parent / "brain-icons.json"
CHIP = '<rect x="1.5" y="1.5" width="41" height="41" rx="12" fill="currentColor" fill-opacity="0.12"/>'
_FALLBACK_GLYPH = (
'<circle cx="22" cy="22" r="11" fill="currentColor" fill-opacity="0.16"/>'
'<circle cx="22" cy="22" r="11" stroke="currentColor" stroke-width="1.6" fill="none"/>'
'<circle cx="22" cy="22" r="3.4" fill="currentColor"/>'
)
_FALLBACK_TECH = (
'<rect x="15" y="15" width="14" height="14" rx="2.5" transform="rotate(45 22 22)" '
'fill="none" stroke="currentColor" stroke-width="2"/><circle cx="22" cy="22" r="2.4" fill="currentColor"/>'
)
def _load_icons(file: Path = ICON_FILE) -> tuple[dict, dict]:
"""Read the icon sidecar: (category slug -> {hue, glyph}, technique name -> svg).
A missing or malformed file is non-fatal — everything then uses the fallbacks below."""
try:
data = json.loads(file.read_text(encoding="utf-8"))
except (OSError, ValueError):
return {}, {}
return (data.get("categories") or {}), (data.get("techniques") or {})
_CATEGORY_STYLES, _TECH_ICONS = _load_icons()
def _hsl_hex(deg: int, s: float, lt: float) -> str:
import colorsys
r, g, b = colorsys.hls_to_rgb((deg % 360) / 360, lt, s)
return f"#{round(r * 255):02x}{round(g * 255):02x}{round(b * 255):02x}"
def category_style(cat: str) -> tuple[str, str]:
"""(hue, glyph markup) for a category — from the sidecar for the shipped set, derived for extras."""
style = _CATEGORY_STYLES.get(cat)
if style and style.get("hue"):
return style["hue"], style.get("glyph") or _FALLBACK_GLYPH
deg = int(hashlib.md5(cat.encode("utf-8")).hexdigest(), 16) % 360
return _hsl_hex(deg, 0.58, 0.52), _FALLBACK_GLYPH
def tech_icon(name: str) -> str:
"""The hand-picked line-icon for a specific technique (neutral mark if unknown)."""
return _TECH_ICONS.get(name, _FALLBACK_TECH)
SELECTOR_TEMPLATE = r"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>BMad Method Brainstorming Selection</title>
<script>
/* set the theme before first paint so there's no light-mode flash */
(function(){ try {
var t = localStorage.getItem('bmad-theme');
if (!t) { t = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; }
document.documentElement.setAttribute('data-theme', t);
} catch(e){} })();
</script>
<style>
:root {
--bg:#f6f7fb; --surface:#fff; --ink:#1c1e2b; --muted:#6b7080;
--accent:#5b4bdc; --accent-ink:#5b4bdc; --warn:#c0561f;
--line:#e6e8f0; --control:#eef0f7; --control2:#f1f2f8; --raised:#fff;
--cnt:#b9bdce; --foot:#aeb2c4; --shadow:rgba(20,20,50,.06);
}
:root[data-theme="dark"] {
--bg:#0f1117; --surface:#171a23; --ink:#e7e9f2; --muted:#9aa0b4;
--accent:#6d5cf0; --accent-ink:#a99bff; --warn:#e08a4a;
--line:#2a2f3e; --control:#222634; --control2:#1d212d; --raised:#2c3242;
--cnt:#5a6076; --foot:#5a6076; --shadow:rgba(0,0,0,.45);
}
/* lift the category hue toward white on dark surfaces so deep hues stay legible */
:root[data-theme="dark"] section > h2 { color:color-mix(in srgb, var(--c) 62%, #fff); }
:root[data-theme="dark"] .tech .ico { color:color-mix(in srgb, var(--c) 68%, #fff); }
:root[data-theme="dark"] label.tech:has(input:checked) { border-color:color-mix(in srgb, var(--c) 60%, #fff); }
.titlerow { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.themebtn { flex:none; width:36px; height:36px; border-radius:9px; background:var(--control); color:var(--ink); font-size:17px; line-height:1; display:inline-flex; align-items:center; justify-content:center; }
.themebtn:hover { background:var(--raised); }
* { box-sizing:border-box; }
body { margin:0; font:16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; background:var(--bg); color:var(--ink); }
header { position:sticky; top:0; z-index:5; background:var(--surface); padding:20px 0 12px; border-bottom:1px solid var(--line); box-shadow:0 2px 12px var(--shadow); }
.hwrap { max-width:1120px; margin:0 auto; padding:0 24px; } /* align header content with the card column on wide screens */
h1 { margin:0 0 4px; font-size:24px; letter-spacing:-.02em; }
.sub { margin:0 0 12px; color:var(--muted); font-size:14px; max-width:74ch; }
button { font:inherit; border:0; border-radius:8px; cursor:pointer; }
.composer { display:flex; flex-direction:column; gap:9px; margin:6px 0 12px; }
.grp { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.glabel { font-size:11px; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); min-width:74px; }
.modes { display:inline-flex; background:var(--control); border-radius:9px; padding:3px; gap:2px; }
.mode { padding:7px 13px; font-size:14px; font-weight:600; color:var(--muted); background:transparent; }
.mode.on { background:var(--raised); color:var(--accent-ink); box-shadow:0 1px 3px var(--shadow); }
.modehint { flex:1 1 240px; min-width:0; font-size:13px; color:var(--muted); font-style:italic; }
.pill { font-size:13px; color:var(--muted); background:var(--control); padding:6px 12px; border-radius:20px; }
.pill b { color:var(--accent-ink); }
.step { display:inline-flex; align-items:center; gap:7px; font-size:13px; color:var(--ink); background:var(--control2); padding:4px 6px 4px 12px; border-radius:20px; }
.step b { min-width:12px; text-align:center; font-size:14px; color:var(--ink); }
.step button { width:24px; height:24px; border-radius:50%; background:var(--raised); color:var(--muted); font-size:17px; line-height:22px; text-align:center; box-shadow:0 1px 2px var(--shadow); }
.step button:hover { color:var(--accent-ink); }
.total { font-size:12px; color:var(--muted); }
.total.warn { color:var(--warn); font-weight:600; }
.bar { display:flex; gap:10px 14px; align-items:center; flex-wrap:wrap; }
#copy { margin-left:auto; padding:9px 22px; background:var(--accent); color:#fff; font-size:14px; font-weight:700; }
#copy:hover { filter:brightness(1.07); }
.chips { flex:1 1 320px; min-width:0; display:flex; gap:7px; flex-wrap:wrap; align-items:center; }
.chip { font-size:12px; padding:4px 11px; border-radius:16px; border:0; color:#fff; background:var(--cc); font-weight:600; cursor:pointer; }
.chip:hover { filter:brightness(1.08); }
.banner { max-height:0; overflow:hidden; transition:max-height .25s ease, padding .22s ease, margin .22s ease; background:linear-gradient(90deg,var(--accent),#8275f2); color:#fff; border-radius:10px; font-weight:700; text-align:center; padding:0 14px; }
.banner.show { max-height:64px; padding:13px 14px; margin-top:10px; }
.banner.fail { background:linear-gradient(90deg,var(--warn),#e0894a); }
main { padding:18px 24px 60px; max-width:1120px; margin:0 auto; }
section { margin:0 0 26px; }
section > h2 { font-size:13px; text-transform:uppercase; letter-spacing:.08em; color:var(--c); margin:0 0 10px; border-bottom:1px solid color-mix(in srgb, var(--c) 24%, var(--line)); padding-bottom:6px; }
section > h2 .cnt { color:color-mix(in srgb, var(--c) 45%, var(--cnt)); margin-left:6px; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(360px,1fr)); gap:10px; }
label.tech { display:flex; gap:12px; align-items:flex-start; background:color-mix(in srgb, var(--c) 5%, var(--surface)); border:1px solid color-mix(in srgb, var(--c) 18%, var(--line)); border-radius:10px; padding:11px 13px; cursor:pointer; transition:border-color .12s, box-shadow .12s, background .12s; }
label.tech:hover { border-color:color-mix(in srgb, var(--c) 45%, var(--surface)); }
label.tech input { margin-top:2px; width:17px; height:17px; accent-color:var(--c); flex:none; }
label.tech:has(input:checked) { border-color:var(--c); background:color-mix(in srgb, var(--c) 12%, var(--surface)); box-shadow:0 0 0 2px color-mix(in srgb, var(--c) 30%, transparent); }
.tech .ic2 { display:flex; gap:5px; flex:none; }
.tech .ico { width:40px; height:40px; flex:none; color:var(--c); }
.tech .n { font-weight:600; display:block; }
.tech .d { color:var(--muted); font-size:13.5px; display:block; margin-top:2px; }
.tech .gf { color:var(--accent-ink); font-size:11px; display:block; margin-top:5px; opacity:.85; }
.grouphdr { margin:30px 0 12px; font-size:12px; text-transform:uppercase; letter-spacing:.14em; font-weight:700; color:var(--c); opacity:.92; border-bottom:1px solid color-mix(in srgb, var(--c) 22%, var(--line)); padding-bottom:7px; }
main > .grouphdr:first-child { margin-top:2px; }
:root[data-theme="dark"] .grouphdr { color:color-mix(in srgb, var(--c) 62%, #fff); }
.goals { display:flex; gap:7px; flex-wrap:wrap; }
.goal { font-size:12px; padding:5px 12px; border-radius:16px; background:var(--control); color:var(--muted); font-weight:600; }
.goal:hover { color:var(--ink); }
.goal.on { background:var(--accent); color:#fff; }
label.tech.invent { border-style:dashed; background:transparent; }
label.tech.invent:hover { border-color:var(--c); }
label.tech.invent .n { color:var(--c); }
label.tech.hidden { display:none; }
footer { text-align:center; color:var(--foot); font-size:12px; padding:24px; }
</style>
</head>
<body>
<header>
<div class="hwrap">
<div class="titlerow">
<h1>BMad Method Brainstorming Selection</h1>
<button id="theme" class="themebtn" type="button" aria-label="Toggle dark mode" title="Toggle dark mode"></button>
</div>
<p class="sub">Compose your session, hit <strong>Copy prompt</strong>, and paste it back into the chat to begin. {{TOTAL}}</p>
<div class="composer">
<div class="grp">
<span class="glabel">Facilitation</span>
<div class="modes" id="modes">
<button type="button" class="mode on" data-mode="Facilitator">Facilitator</button>
<button type="button" class="mode" data-mode="Creative Partner">Creative Partner</button>
<button type="button" class="mode" data-mode="Ideate for me">Ideate for me</button>
</div>
<span class="modehint" id="modehint"></span>
</div>
<div class="grp">
<span class="glabel">Techniques</span>
<span class="pill">Picked <b id="pickN">0</b></span>
<span class="step">Random <button type="button" data-step="rand" data-d="-1">−</button><b id="randN">0</b><button type="button" data-step="rand" data-d="1">+</button></span>
<span class="step">Invent <button type="button" data-step="inv" data-d="-1">−</button><b id="invN">0</b><button type="button" data-step="inv" data-d="1">+</button></span>
<span class="step">AI picks <button type="button" data-step="ai" data-d="-1">−</button><b id="aiN">0</b><button type="button" data-step="ai" data-d="1">+</button></span>
<span class="total" id="total">Total 0 · 3–4 is the sweet spot</span>
<button id="copy" type="button">Copy prompt</button>
</div>
</div>
{{GOALBAR}}
<div class="bar">
<span class="glabel">Jump to</span>
<div class="chips" id="chips">{{CHIPS}}</div>
</div>
<div class="banner" id="banner">✓ Copied! Now paste it into the chat to start your session.</div>
</div>
</header>
<main>
{{BODY}}
</main>
<footer>BMad Method · Brainstorming</footer>
<script>
(function(){
var $ = function(id){ return document.getElementById(id); };
var all = Array.prototype.slice;
var boxes = all.call(document.querySelectorAll('input[type=checkbox]'));
var techBoxes = boxes.filter(function(b){ return b.dataset.name; }); // real technique cards
var inventBoxes = boxes.filter(function(b){ return b.dataset.invent; }); // per-category "invent in the spirit of" cards
var header = document.querySelector('header');
var sections = all.call(document.querySelectorAll('section'));
var state = { mode: 'Facilitator', rand: 0, inv: 0, ai: 0 };
var MODE_HINTS = {
'Facilitator': 'A forcing function for your ideas — I prompt and push, but never supply them.',
'Creative Partner': 'We riff together — I facilitate and add ideas too, each logged as yours or mine.',
'Ideate for me': 'I run the whole session myself, then show you the result and offer to keep going.'
};
function setHint(){ $('modehint').textContent = MODE_HINTS[state.mode] || ''; }
var themeBtn = $('theme');
function setThemeIcon(){ themeBtn.textContent = document.documentElement.getAttribute('data-theme') === 'dark' ? '☀' : '☾'; }
themeBtn.addEventListener('click', function(){
var next = document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', next);
try { localStorage.setItem('bmad-theme', next); } catch(e){}
setThemeIcon();
});
all.call(document.querySelectorAll('.mode')).forEach(function(b){
b.addEventListener('click', function(){
all.call(document.querySelectorAll('.mode')).forEach(function(m){ m.classList.remove('on'); });
b.classList.add('on');
state.mode = b.dataset.mode;
setHint();
});
});
all.call(document.querySelectorAll('[data-step]')).forEach(function(btn){
btn.addEventListener('click', function(){
var k = btn.dataset.step, d = parseInt(btn.dataset.d, 10);
state[k] = Math.max(0, state[k] + d);
update();
});
});
// Category chips are jump-nav: click one to smooth-scroll its section into view,
// offsetting by the sticky header's height so the heading isn't hidden beneath it.
all.call(document.querySelectorAll('.chip')).forEach(function(chip){
chip.addEventListener('click', function(){
var sec = null;
for (var i = 0; i < sections.length; i++){ if (sections[i].dataset.cat === chip.dataset.cat){ sec = sections[i]; break; } }
if (!sec){ return; }
var top = sec.getBoundingClientRect().top + window.pageYOffset - header.offsetHeight - 8;
window.scrollTo({ top: top, behavior: 'smooth' });
});
});
boxes.forEach(function(b){ b.addEventListener('change', update); });
// A `classic` technique appears twice (lead "Proven & Professional" group + its home
// category), so de-dupe checked picks by name; the lead copy carries data-lead.
function checkedTech(){
var seen = {}, out = [];
techBoxes.forEach(function(b){
if (!b.checked || seen[b.dataset.name]) { return; }
seen[b.dataset.name] = 1;
out.push(b);
});
return out;
}
function checkedInvent(){ return inventBoxes.filter(function(b){ return b.checked; }); }
function update(){
// rand can't exceed what the pool can supply — keep the counter honest with the draw
if (state.rand > randomPool().length){ state.rand = randomPool().length; }
$('pickN').textContent = checkedTech().length;
$('randN').textContent = state.rand;
$('invN').textContent = state.inv;
$('aiN').textContent = state.ai;
var total = checkedTech().length + state.rand + state.inv + checkedInvent().length + state.ai;
var t = $('total');
t.textContent = 'Total ' + total + ' · 3–4 is the sweet spot';
t.classList.toggle('warn', total > 5);
}
// "Great for" goal filter: clicking a goal narrows visible cards to those tagged with it.
var goalBtns = all.call(document.querySelectorAll('.goal'));
function activeGoals(){ return goalBtns.filter(function(b){ return b.classList.contains('on'); }).map(function(b){ return b.dataset.goal; }); }
function applyFilter(){
var act = activeGoals();
all.call(document.querySelectorAll('label.tech')).forEach(function(lab){
var inp = lab.querySelector('input');
if (inp.dataset.invent){ return; } // invent cards aren't goal-tagged — always visible
var good = (inp.dataset.good || '').split('|');
var show = !act.length || act.some(function(g){ return good.indexOf(g) >= 0; });
lab.classList.toggle('hidden', !show);
});
}
goalBtns.forEach(function(b){ b.addEventListener('click', function(){ b.classList.toggle('on'); applyFilter(); }); });
function randomPool(){
var picked = {};
checkedTech().forEach(function(b){ picked[b.dataset.name] = 1; });
// draw from unchecked, non-lead copies, skipping anything already picked
return techBoxes.filter(function(b){ return !b.checked && !b.dataset.lead && !picked[b.dataset.name]; });
}
function sample(arr, n){
var a = arr.slice(), out = [];
while (out.length < n && a.length){ out.push(a.splice(Math.floor(Math.random() * a.length), 1)[0]); }
return out;
}
function compose(){
var picks = checkedTech().map(function(b){ return { n: b.dataset.name, c: b.dataset.cat, d: b.dataset.desc, r: false }; });
var rnd = sample(randomPool(), state.rand).map(function(b){ return { n: b.dataset.name, c: b.dataset.cat, d: b.dataset.desc, r: true }; });
var techs = picks.concat(rnd);
var L = ["Let's run my brainstorming session.", "", 'Facilitation mode: ' + state.mode + '.'];
if (techs.length){
L.push("", 'Techniques to use:');
techs.forEach(function(t, i){
L.push((i + 1) + '.' + (t.r ? ' (random pick)' : '') + ' ' + t.n + ' · ' + t.c);
L.push(' ' + t.d);
});
}
var extra = [];
if (state.inv > 0){ extra.push('invent ' + state.inv + ' brand-new technique' + (state.inv > 1 ? 's' : '') + ' on the fly'); }
checkedInvent().forEach(function(b){ extra.push('invent 1 new technique in the spirit of ' + b.dataset.invent); });
if (state.ai > 0){ extra.push('you choose ' + state.ai + ' more technique' + (state.ai > 1 ? 's' : '') + ' that fit my goal'); }
if (extra.length){ L.push("", 'Then: ' + extra.join('; and ') + '.'); }
if (!techs.length && !extra.length){
L.push("", state.mode === 'Ideate for me'
? 'Run the whole session yourself — pick the techniques, generate the ideas, then show me the result.'
: 'Help me choose 3–4 techniques to start.');
}
return L.join('\n');
}
function fallbackCopy(t){
var ta = document.createElement('textarea');
ta.value = t; ta.style.position = 'fixed'; ta.style.opacity = '0';
document.body.appendChild(ta); ta.focus(); ta.select();
var ok = false;
try { ok = document.execCommand('copy'); } catch(e){ ok = false; }
document.body.removeChild(ta);
return ok;
}
function flash(ok, text){
var b = $('banner');
b.classList.toggle('fail', !ok);
b.innerHTML = ok
? '✓ Copied! Now paste it into the chat to start your session.'
: '⚠ Couldn’t reach the clipboard — copy the text in the box, then paste it into the chat.';
b.classList.add('show');
setTimeout(function(){ b.classList.remove('show'); }, 4500);
// Last resort on a hard failure: a prefilled, selectable prompt so the text is never lost.
if (!ok){ window.prompt('Copy this, then paste it into the chat:', text); }
}
$('copy').addEventListener('click', function(){
var text = compose();
if (navigator.clipboard && navigator.clipboard.writeText){
navigator.clipboard.writeText(text).then(
function(){ flash(true, text); },
function(){ flash(fallbackCopy(text), text); }
);
} else { flash(fallbackCopy(text), text); }
});
setHint();
setThemeIcon();
update();
})();
</script>
</body>
</html>
"""
# --- browse-page layout: a "Proven & Professional" lead group, then super-groups ----------
CLASSIC_GROUP = "Proven & Professional"
LEAD_HUE = "#3d4f73" # a dignified slate for the professional lead group
# Super-group order for the shipped categories. Categories not listed (e.g. user-added
# via --extra) render last under "More", alphabetically — so custom catalogs always show.
CATEGORY_GROUPS = (
("Structured & Analytical", ("structured", "deep")),
("Creative & Generative", ("creative", "biomimetic", "cultural", "speculative_future", "quantum")),
("Wild & Playful", ("wild", "absurdist", "theatrical", "constraint")),
("Introspective & Personal", ("introspective_delight", "collaborative")),
)
# Human labels for the `good_for` goal tags; this dict's order is the filter-bar order.
GOAL_LABELS = {
"feature": "Build a feature",
"novel": "Novel concept",
"strategy": "Strategy",
"planning": "Planning",
"diagnosis": "Diagnose",
"personal": "Personal / life",
"unstuck": "Get unstuck",
}
def _good_for_label(good: str) -> str:
parts = [GOAL_LABELS.get(g, g) for g in good.split("|") if g]
return ("Great for: " + " · ".join(parts)) if parts else ""
def _svg(inner: str) -> str:
return f'<svg class="ico" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg">{CHIP}{inner}</svg>'
def _card(r: dict, lead: bool = False) -> str:
"""One technique card. `lead=True` cards live in the cross-cutting professional group;
they carry their own category hue (inline --c) and data-lead so selection can de-dupe."""
name = html.escape(r["technique_name"])
desc = html.escape(r["description"])
hue, glyph = category_style(r["category"])
disp_cat = html.escape(pretty(r["category"]))
good = html.escape(r.get("good_for", ""))
prov = html.escape(r.get("provenance", ""))
style = f' style="--c:{hue}"' if lead else ""
lead_attr = ' data-lead="1"' if lead else ""
gf = _good_for_label(r.get("good_for", ""))
gf_html = f'<span class="gf">{html.escape(gf)}</span>' if gf else ""
return (
f'<label class="tech"{style}><input type="checkbox" '
f'data-name="{name}" data-cat="{disp_cat}" data-desc="{desc}" data-good="{good}" data-prov="{prov}"{lead_attr}>'
f'<span class="ic2">{_svg(glyph)}{_svg(tech_icon(r["technique_name"]))}</span>'
f'<span><span class="n">{name}</span><span class="d">{desc}</span>{gf_html}</span></label>'
)
def _invent_card(disp_cat: str, glyph: str) -> str:
"""A dashed 'invent on the fly, in this category's spirit' card appended to each section."""
return (
f'<label class="tech invent"><input type="checkbox" data-invent="{disp_cat}">'
f'<span class="ic2">{_svg(glyph)}</span>'
f'<span><span class="n">✨ Invent a {disp_cat} technique</span>'
f'<span class="d">Make up a brand-new technique on the fly, in the spirit of {disp_cat}</span></span></label>'
)
def html_doc(rows: list[dict]) -> str:
"""Render the self-contained 'browse all techniques' selection page from the catalog.
Deterministic ordering so the shipped asset can be snapshot-tested against the CSV:
a cross-cutting "Proven & Professional" lead group (every `classic`-tagged row), then
the categories in fixed super-group order, then any unlisted/custom categories under
"More" alphabetically. Techniques render in file order within a category. A `classic`
row appears both in the lead group and its home category; the page de-dupes on select.
"""
groups: dict[str, list[dict]] = {}
for r in rows:
groups.setdefault(r["category"], []).append(r)
body: list[str] = []
chips: list[str] = []
def add_section(cat: str) -> None:
hue, glyph = category_style(cat)
disp = html.escape(pretty(cat))
cards = [_card(r) for r in groups[cat]]
cards.append(_invent_card(disp, glyph))
chips.append(f'<button type="button" class="chip" data-cat="{disp}" style="--cc:{hue}">{disp}</button>')
body.append(
f'<section data-cat="{disp}" style="--c:{hue}"><h2>{disp}<span class="cnt">{len(groups[cat])}</span></h2>'
f'<div class="grid">{"".join(cards)}</div></section>'
)
# 1) lead group — every classic-tagged technique, cross-category (no invent card here)
classics = [r for r in rows if r.get("provenance", "").lower() == "classic"]
if classics:
disp = html.escape(CLASSIC_GROUP)
lead_cards = "".join(_card(r, lead=True) for r in classics)
chips.append(f'<button type="button" class="chip" data-cat="{disp}" style="--cc:{LEAD_HUE}">{disp}</button>')
body.append(
f'<section data-cat="{disp}" style="--c:{LEAD_HUE}"><h2>{disp}<span class="cnt">{len(classics)}</span></h2>'
f'<div class="grid">{lead_cards}</div></section>'
)
# 2) shipped categories, in super-group order
placed = set()
for group_title, cats in CATEGORY_GROUPS:
present = [c for c in cats if c in groups]
if not present:
continue
hue, _ = category_style(present[0])
body.append(f'<h2 class="grouphdr" style="--c:{hue}">{html.escape(group_title)}</h2>')
for c in present:
add_section(c)
placed.add(c)
# 3) leftover (custom / --extra) categories, alphabetically
leftover = sorted(c for c in groups if c not in placed)
if leftover:
body.append('<h2 class="grouphdr" style="--c:#8a8f9e">More</h2>')
for c in leftover:
add_section(c)
# goal-affinity filter bar — only if the catalog actually carries good_for tags
present_goals: set[str] = set()
for r in rows:
for g in (r.get("good_for", "") or "").split("|"):
if g:
present_goals.add(g)
goalbar = ""
if present_goals:
ordered = [g for g in GOAL_LABELS if g in present_goals] + sorted(present_goals - set(GOAL_LABELS))
gchips = "".join(
f'<button type="button" class="goal" data-goal="{html.escape(g)}">{html.escape(GOAL_LABELS.get(g, g))}</button>'
for g in ordered
)
goalbar = (
f'<div class="bar"><span class="glabel">Great for</span><div class="goals" id="goals">{gchips}</div></div>'
)
total = html.escape(f"{len(rows)} techniques across {len(groups)} categories.")
return (
SELECTOR_TEMPLATE.replace("{{BODY}}", "\n".join(body))
.replace("{{CHIPS}}", "".join(chips))
.replace("{{GOALBAR}}", goalbar)
.replace("{{TOTAL}}", total)
)
def pin_utf8(stream):
"""Pin a console stream to UTF-8, keeping its own error handler.
`--extra` technique text and the technique names echoed to stderr are
arbitrary user input, so either stream can carry a character the platform
default cannot encode (cp1252 on Windows) and print() then raises.
errors= is passed through deliberately: reconfigure(encoding=...) alone
resets the handler to "strict", which would silently downgrade stderr's
POSIX default of "backslashreplace" and turn a diagnostic about an
undecodable path into a traceback.
"""
reconfigure = getattr(stream, "reconfigure", None)
if reconfigure is not None:
reconfigure(encoding="utf-8", errors=getattr(stream, "errors", None) or "strict")
def main(argv: list[str] | None = None) -> int:
pin_utf8(sys.stdout)
pin_utf8(sys.stderr)
p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
p.add_argument(
"--file", type=Path, default=DEFAULT_FILE, help="technique CSV (default: sibling assets/brain-methods.csv)"
)
p.add_argument(
"--extra",
type=Path,
help="JSON overlay of additional techniques (customize.toml additional_techniques), merged into every command",
)
p.add_argument("--json", action="store_true", help="emit structured JSON instead of lean text")
sub = p.add_subparsers(dest="cmd", required=True)
sub.add_parser("categories", help="list category names + counts")
pl = sub.add_parser("list", help="the index: category/name/gist (needs --category or --all)")
pl.add_argument("--category", action="append", help="filter to a category (repeatable)")
pl.add_argument("--all", action="store_true", help="dump the entire catalog (deliberate; large)")
ps = sub.add_parser("show", help="full gist + detail file for named techniques")
ps.add_argument("names", nargs="+")
pr = sub.add_parser("random", help="pick techniques at random")
pr.add_argument("--category", action="append", help="restrict to a category (repeatable)")
pr.add_argument("-n", type=int, default=1, help="how many (default 1)")
ph = sub.add_parser("html", help="write the offline 'browse all' selection page")
ph.add_argument("--out", help="file to write the page to (required; never prints the catalog)")
args = p.parse_args(argv)
if not args.file.is_file():
print(f"error: technique file not found: {args.file}", file=sys.stderr)
return 2
rows = load(args.file)
if args.extra:
if not args.extra.is_file():
print(f"error: --extra file not found: {args.extra}", file=sys.stderr)
return 2
try:
rows = merge_extra(rows, load_extra(args.extra))
except (OSError, ValueError) as e:
print(f"error: could not read --extra: {e}", file=sys.stderr)
return 2
csv_dir = args.file.resolve().parent
if args.cmd == "categories":
print(fmt_categories(categories(rows), args.json))
elif args.cmd == "list":
if not args.category and not args.all:
print(
"error: `list` needs --category (one or more) — or --all to dump the whole "
"catalog on purpose. Use `categories` for the cheap map, or `random` to draw blind.",
file=sys.stderr,
)
return 2
print(fmt_list(filter_cats(rows, args.category), args.json))
elif args.cmd == "show":
found, missing = find(rows, args.names)
for m in missing:
print(f"# not found: {m}", file=sys.stderr)
if not found:
return 1
print(fmt_show(found, csv_dir, args.json))
elif args.cmd == "random":
pool = filter_cats(rows, args.category)
if not pool:
print("# no techniques match", file=sys.stderr)
return 1
n = max(0, min(args.n, len(pool))) # clamp: never crash on a negative or oversized -n
print(fmt_list(random.sample(pool, n), args.json))
elif args.cmd == "html":
if not args.out:
print(
"error: `html` needs --out PATH — it writes the selection page to a file and "
"never prints the catalog to stdout (which would defeat the point).",
file=sys.stderr,
)
return 2
out = Path(args.out)
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(html_doc(rows), encoding="utf-8")
print(f"wrote {out} ({len(rows)} techniques, {len(categories(rows))} categories)")
return 0
if __name__ == "__main__":
sys.exit(main())
scripts/tests/test_brain.py
# /// script
# requires-python = ">=3.11"
# dependencies = ["pytest>=8.0"]
# ///
"""Tests for brain.py. Run: uv run -m pytest scripts/tests/test_brain.py"""
import io
import json
import sys
from pathlib import Path
import pytest
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
import brain # noqa: E402
CSV = """category,technique_name,description,detail
collaborative,Yes And Building,Build on every idea with "yes and" to keep momentum,
wild,Quantum Superposition,Hold contradictory ideas as simultaneously true,techniques/quantum.md
structured,SCAMPER Method,Run the idea through seven transformation lenses,
wild,Anti-Solution,Brainstorm how to make the problem worse then invert,
"""
DETAIL = "# Quantum Superposition\nFull multi-step instructions for the complex technique."
@pytest.fixture
def lib(tmp_path):
csv_path = tmp_path / "brain-methods.csv"
csv_path.write_text(CSV, encoding="utf-8")
(tmp_path / "techniques").mkdir()
(tmp_path / "techniques" / "quantum.md").write_text(DETAIL, encoding="utf-8")
return csv_path
def test_load_normalizes_detail(lib):
rows = brain.load(lib)
assert len(rows) == 4
assert rows[0]["detail"] == ""
assert rows[1]["detail"] == "techniques/quantum.md"
def test_categories_counts_sorted(lib):
assert brain.categories(brain.load(lib)) == [("collaborative", 1), ("structured", 1), ("wild", 2)]
def test_filter_is_case_insensitive(lib):
rows = brain.filter_cats(brain.load(lib), ["WILD"])
assert {r["technique_name"] for r in rows} == {"Quantum Superposition", "Anti-Solution"}
def test_filter_none_returns_all(lib):
assert len(brain.filter_cats(brain.load(lib), None)) == 4
def test_find_hits_and_misses(lib):
found, missing = brain.find(brain.load(lib), ["scamper method", "Nope"])
assert [r["technique_name"] for r in found] == ["SCAMPER Method"]
assert missing == ["Nope"]
def test_resolve_detail_present(lib):
row = next(r for r in brain.load(lib) if r["detail"])
assert "multi-step instructions" in brain.resolve_detail(row, lib.parent)
def test_resolve_detail_absent_is_none(lib):
row = next(r for r in brain.load(lib) if not r["detail"])
assert brain.resolve_detail(row, lib.parent) is None
def test_resolve_detail_missing_file_warns_not_fatal(lib, capsys):
rows = brain.load(lib)
rows[1]["detail"] = "techniques/gone.md"
assert brain.resolve_detail(rows[1], lib.parent) is None
assert "not found" in capsys.readouterr().err
def test_show_inlines_detail(lib, capsys):
assert brain.main(["--file", str(lib), "show", "Quantum Superposition"]) == 0
out = capsys.readouterr().out
assert "multi-step instructions" in out and "[wild]" in out
def test_show_simple_has_no_detail(lib, capsys):
brain.main(["--file", str(lib), "show", "SCAMPER Method"])
out = capsys.readouterr().out
assert "transformation lenses" in out
def test_show_all_missing_returns_1(lib):
assert brain.main(["--file", str(lib), "show", "Ghost"]) == 1
def test_list_filtered_text(lib, capsys):
brain.main(["--file", str(lib), "list", "--category", "structured"])
out = capsys.readouterr().out.strip().splitlines()
assert len(out) == 1 and out[0].startswith("structured\tSCAMPER Method\t")
def test_list_bare_is_refused(lib, capsys):
# the footgun: bare `list` must NOT dump the catalog into context
assert brain.main(["--file", str(lib), "list"]) == 2
captured = capsys.readouterr()
assert captured.out == "" # nothing leaked to stdout
assert "--category" in captured.err and "--all" in captured.err
def test_list_all_dumps_everything(lib, capsys):
assert brain.main(["--file", str(lib), "list", "--all"]) == 0
out = capsys.readouterr().out.strip().splitlines()
assert len(out) == 4 # the deliberate full-catalog escape hatch
def test_json_output(lib, capsys):
import json
brain.main(["--file", str(lib), "--json", "categories"])
data = json.loads(capsys.readouterr().out)
assert {"category": "wild", "count": 2} in data
def test_random_respects_n_and_category(lib, capsys):
brain.main(["--file", str(lib), "random", "--category", "wild", "-n", "5"])
lines = capsys.readouterr().out.strip().splitlines()
assert len(lines) == 2 # only 2 wild exist, n capped
assert all(line.startswith("wild\t") for line in lines)
def test_random_negative_n_does_not_crash(lib, capsys):
# a negative -n is clamped to 0, not passed to random.sample (which would raise)
assert brain.main(["--file", str(lib), "random", "-n", "-1"]) == 0
assert capsys.readouterr().out.strip() == ""
def test_missing_file_returns_2(tmp_path):
assert brain.main(["--file", str(tmp_path / "nope.csv"), "categories"]) == 2
# --- html selection page ------------------------------------------------
def test_html_requires_out(lib, capsys):
# never dump the catalog to stdout — writing to a file is the whole point
assert brain.main(["--file", str(lib), "html"]) == 2
assert "--out" in capsys.readouterr().err
def test_html_writes_selection_page(lib, tmp_path):
out = tmp_path / "sel.html"
assert brain.main(["--file", str(lib), "html", "--out", str(out)]) == 0
doc = out.read_text(encoding="utf-8")
assert doc.startswith("<!DOCTYPE html>")
assert "BMad Method Brainstorming Selection" in doc
for r in brain.load(lib):
assert r["technique_name"] in doc # every technique is selectable
assert ""yes and"" in doc # quotes in a description are escaped, not raw
def test_html_creates_missing_parent(lib, tmp_path):
out = tmp_path / "nested" / "deep" / "sel.html"
assert brain.main(["--file", str(lib), "html", "--out", str(out)]) == 0
assert out.is_file()
# --- --extra overlay (customize.toml additional_techniques) -------------
EXTRA = (
'[{"category": "domain-specific", "technique_name": "Regulatory Inversion", '
'"description": "Start from the compliance constraint and brainstorm what it unlocks."}, '
'{"category": "wild", "technique_name": "Extra Wild One", "description": "An added wild method."}]'
)
@pytest.fixture
def extra(tmp_path):
p = tmp_path / "extra.json"
p.write_text(EXTRA, encoding="utf-8")
return p
def test_extra_merges_into_categories(lib, extra, capsys):
brain.main(["--file", str(lib), "--extra", str(extra), "categories"])
out = capsys.readouterr().out
assert "domain-specific\t1" in out # a brand-new category appears
assert "wild\t3" in out # the extra wild one is counted alongside the shipped two
def test_extra_appears_in_list_and_random(lib, extra, capsys):
brain.main(["--file", str(lib), "--extra", str(extra), "list", "--category", "domain-specific"])
assert "Regulatory Inversion" in capsys.readouterr().out
def test_extra_replaces_shipped_row_by_name(lib, extra, tmp_path, capsys):
shipped = brain.load(Path(lib))[0]
overlay = tmp_path / "replace.json"
overlay.write_text(
json.dumps(
[{"category": shipped["category"], "technique_name": shipped["technique_name"], "description": "RETUNED"}]
),
encoding="utf-8",
)
brain.main(["--file", str(lib), "--extra", str(overlay), "list", "--all"])
out = capsys.readouterr().out
assert "RETUNED" in out
assert out.count(shipped["technique_name"]) == 1 # replaced, not duplicated
def test_extra_malformed_exits_cleanly(lib, tmp_path, capsys):
bad = tmp_path / "bad.json"
for content in ("{not json", '{"a": 1}', '["not-an-object"]'):
bad.write_text(content, encoding="utf-8")
assert brain.main(["--file", str(lib), "--extra", str(bad), "categories"]) == 2
assert "could not read --extra" in capsys.readouterr().err
def test_extra_is_first_class_in_html(lib, extra, tmp_path):
out = tmp_path / "sel.html"
assert brain.main(["--file", str(lib), "--extra", str(extra), "html", "--out", str(out)]) == 0
doc = out.read_text(encoding="utf-8")
# custom technique is selectable and its new category renders without crashing (fallback glyph/hue)
assert "Regulatory Inversion" in doc
assert "Domain Specific" in doc
def test_extra_missing_file_returns_2(lib, tmp_path):
assert brain.main(["--file", str(lib), "--extra", str(tmp_path / "nope.json"), "categories"]) == 2
def test_unknown_category_style_uses_fallback_glyph():
hue, glyph = brain.category_style("totally-made-up-category")
assert hue.startswith("#") and len(hue) == 7 # valid derived hex
assert glyph == brain._FALLBACK_GLYPH
# --- console encoding (Windows cp1252) ----------------------------------
def _cp1252_stream():
"""A text stream that behaves like a Windows console: cp1252, strict."""
return io.TextIOWrapper(io.BytesIO(), encoding="cp1252", errors="strict", write_through=True)
def test_extra_technique_prints_when_stdout_encoding_is_cp1252(lib, tmp_path, monkeypatch):
# --extra text is arbitrary user input; the shipped catalog happens to be
# cp1252-safe, an overlay is not. Unpinned stdout raises UnicodeEncodeError
# and the command exits having printed nothing.
overlay = tmp_path / "extra.json"
overlay.write_text(
json.dumps(
[{"category": "wild", "technique_name": "Fikir Fırtınası 🌪", "description": "Beyin fırtınası — 日本語"}]
),
encoding="utf-8",
)
fake = _cp1252_stream()
monkeypatch.setattr(sys, "stdout", fake)
assert brain.main(["--file", str(lib), "--extra", str(overlay), "list", "--all"]) == 0
out = fake.buffer.getvalue().decode("utf-8")
assert "Fikir Fırtınası 🌪" in out
assert "日本語" in out
def test_missing_technique_name_reports_when_stderr_encoding_is_cp1252(lib, monkeypatch):
# `show` echoes the name it could not find; that name came from argv.
fake = _cp1252_stream()
monkeypatch.setattr(sys, "stderr", fake)
assert brain.main(["--file", str(lib), "show", "日本語"]) == 1
assert "日本語" in fake.buffer.getvalue().decode("utf-8")
def test_pin_utf8_preserves_the_streams_error_handler():
# reconfigure(encoding=...) on its own resets errors to "strict"; stderr on
# POSIX defaults to "backslashreplace" and must keep it, or a diagnostic
# carrying a surrogate-escaped path becomes a traceback.
stream = io.TextIOWrapper(io.BytesIO(), encoding="ascii", errors="backslashreplace")
brain.pin_utf8(stream)
assert stream.encoding == "utf-8"
assert stream.errors == "backslashreplace"
def test_pin_utf8_ignores_a_stream_without_reconfigure():
class Captured: # e.g. pytest's capture object, or a StringIO stand-in
errors = None
brain.pin_utf8(Captured()) # must not raise
def test_shipped_selector_is_in_sync_with_catalog():
# foolproofing: if someone edits brain-methods.csv they must regenerate the page.
# Regenerate with: uv run brain.py html --out assets/brain-selector.html
asset = brain.DEFAULT_FILE.parent / "brain-selector.html"
assert asset.is_file(), "missing assets/brain-selector.html — generate it"
expected = brain.html_doc(brain.load(brain.DEFAULT_FILE))
assert asset.read_text(encoding="utf-8") == expected, (
"assets/brain-selector.html is stale; regenerate: uv run brain.py html --out assets/brain-selector.html"
)
SKILL.md
---
name: bmad-brainstorming
description: Facilitate a brainstorming session using diverse creative techniques. Use when the user says 'help me brainstorm' or 'help me ideate'
---
# BMad Brainstorming
## Overview
You are a creative brainstorming coach. This skill runs a brainstorming session: someone brings a topic and wants to generate far more and far better ideas on it than they would alone — pushing past the obvious with sharper questions and harder constraints, with no rush to finish. The best sessions end with the user surprised by what came out.
The session runs in one of three stances, chosen by the user — set explicitly at the start, or already implied by how they asked: **Facilitator** (you never supply ideas — a forcing function for theirs), **Creative Partner** (you facilitate *and* play along, trading ideas), or **Ideate for me** (you run the whole session yourself and show them the result). The chosen stance holds for the whole run.
## Conventions
- Bare paths (e.g. `references/headless.md`) resolve from `{skill-root}` (where `customize.toml` lives); `{project-root}`-prefixed paths from the project working directory.
- `{workflow.<name>}` resolves to fields in the merged `customize.toml` `[workflow]` table.
## On Activation
1. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow`. On failure, use a subagent to read `{skill-root}/customize.toml` directly with defaults.
2. Run each `{workflow.activation_steps_prepend}` entry. Treat each `{workflow.persistent_facts}` entry as foundational context (`file:`-prefixed entries are paths/globs under `{project-root}` — load their contents; others are facts verbatim).
3. Resolve central config: `uv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key core` (merges `_bmad/config.toml` and the `_bmad/custom/` overrides); from the merged JSON resolve `{output_folder}`, `{project_name}`; `{date}` is today. On failure or missing values → neutral defaults; never block.
4. **If launched headless** (a machine signal, not a human asking for output — `references/headless.md` lists them): load `references/headless.md` and follow it for the whole run; never load it otherwise. Outside headless, you generate ideas yourself only in autonomous mode (`references/mode-autonomous.md`) — never in facilitator or partner mode.
5. **Otherwise (interactive):** greet the user. Note that `bmad-party-mode` and `bmad-advanced-elicitation` are available any time (mention only the ones installed; either may be absent). Glob `{workflow.output_dir}/*/.memlog.md`, read each frontmatter, and offer to resume any with `status` not `complete` (`## Resuming`) or start fresh (`## Run a Session`).
Run each `{workflow.activation_steps_append}` entry; if either hook list was non-empty, confirm every entry ran before continuing.
## Framing — hold this the whole run
These fight your defaults, in every mode; hold them deliberately. The stance you pick adds one more frame (`references/mode-*.md`) on top.
- **Aim past 100 ideas; resist concluding.** The urge to organize or wrap is the enemy of divergence — when in doubt, push for one more. Land only when the user is spent or the topic is mined out.
- **Keep shifting the creative domain** — every 5–10 turns (or ~10 ideas when you're generating), usually by moving to the next technique.
- **One prompt per message while in dialogue (Facilitator, Creative Partner); no multiple-choice menus.** Don't stack questions into a wall or hand a menu that invites lazy picking — both pull the user out of generating. The only exceptions are the two up-front *process* choices (stance, and the technique flow): *how* to run is theirs to pick; *what* to ideate never is.
**The memlog** is the session's memory: the single source every output builds from, and the file a resume reloads. Whatever isn't in it is gone. Log every idea, decision, question, and bit of user direction — anything you'd regret losing if the window closed — one line each, the gist in the user's meaning, in time order; never edit or reorder. Skip your prompts and small talk. All writes to memlog are atomic and use the script `memlog.py` invoked as follows:
- `uv run {project-root}/_bmad/scripts/memlog.py init --workspace {doc_workspace} --field topic="<topic>" --field goal="<goal>" --field mode="<facilitator|partner|autonomous>"` — create it once topic, goal, and stance are known.
- `uv run {project-root}/_bmad/scripts/memlog.py append --workspace {doc_workspace} --type <kind> --text "<one-line gist>"` — log one entry. `--type` ∈ `idea`/`insight`/`question`/`decision`/`direction`/`technique` (a switch: `--text "started <name>"`); omit for a plain note. Add `--by user`/`--by coach` to mark authorship — **required in Creative Partner mode** (renders `(idea by user)`); skip it otherwise.
- `uv run {project-root}/_bmad/scripts/memlog.py set --workspace {doc_workspace} --key status --value complete` — flip status at wrap-up.
## Run a Session
Open with one compound question what are we brainstorming, and what's the goal or why behind it (along with asking if there are any inputs or special requests). The why shapes technique choice and synthesis (*kids' iPhone apps to build with your own kids* vs. *to win market share* point different ways). If the kickoff already made both clear, skip the question and confirm; read anything they point you to. Derive a kebab-case `{topic_slug}` and bind `{doc_workspace} = {workflow.output_dir}/{workflow.output_folder_name}/`.
Now set the **stance** and the **technique batch** in one step — the composer page does both, so make it the default.
**The composer page (primary).** The file is `{skill-root}/assets/brain-selector.html`. With a customized catalog (overridden `{workflow.brain_methods}` or any `{workflow.additional_techniques}`), regenerate it first: `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} [--extra {doc_workspace}/extra-techniques.json] html --out {doc_workspace}/brain-selector.html` (pass `--extra`, a JSON list of `{category, technique_name, description}`, when there are additional techniques; the file is then `{doc_workspace}/brain-selector.html`). Try to open it (`open` / `xdg-open` / `start`), then say, in one message: *"It should open in your browser — compose your session, click **Copy prompt**, and paste the result back. If it didn't open, open `<path>` yourself, or say 'let's do it in chat'."* You can't see their browser, so never claim it opened.
Read the pasted block: the **`Facilitation mode:`** line → the stance; the **listed techniques** (full category/name/description, some tagged `(random pick)`) → run them as given, no `list`/`show` needed; **`invent N`** / **`you choose N`** → see `## Choosing Techniques`.
**Or in chat.** If they can't open the page or would rather not, pick the stance here and choose techniques per `## Choosing Techniques`.
Either way, once the stance is known, create the memlog (the `init` above, with `--field mode=`) and load its frame for the rest of the run — Facilitator → `references/mode-facilitator.md`, Creative Partner → `references/mode-partner.md`, Ideate for me → `references/mode-autonomous.md`. Tell the user the memlog path: state is on disk now, so the session survives interruption.
## Choosing Techniques
For **Facilitator** and **Creative Partner**. (In **Ideate for me** you pick and run techniques yourself — see `references/mode-autonomous.md`.)
Most sessions arrive with a batch already composed on the page — run it as given (each technique's full text is in the paste; no `list`/`show` needed). Two parts of a paste delegate back to you:
- **`invent N`** (Inventive Flow) — invent N brand-new techniques on the fly. A line may scope an invention (`invent 1 new technique in the spirit of <category>`, from the page's per-category invent card) — when it does, honor that category's spirit. Announce the order, log each one's name + description, and offer to save a keeper to `{workflow.additional_techniques}` at wrap-up.
- **`you choose N`** (Facilitator Chosen) — pick N techniques fitting the goal, `{workflow.favorite_techniques}` first; confirm exact names with a scoped `uv run {skill-root}/scripts/brain.py --file {workflow.brain_methods} list --category <cat>`. Never pull the library whole into context.
If they didn't use the page, load `references/in-chat-techniques.md` and pick the batch in chat (**3–4 is the sweet spot**).
Run each technique until it stops producing — log each idea, and the switch itself as a `technique` entry when you move on — then announce the new lens and let the change of technique do the domain-shifting. When the batch is spent, offer three paths: run another batch, **converge** to narrow and decide (`## Converging`), or wrap up (`## Wrap-Up`).
## Converging
The catalog is all *divergent* — built to generate. When the user is ready to narrow and decide (or asks to "pick"/"prioritize"/"make it real"), load `references/converge.md` and follow it; it ends by handing off to `## Wrap-Up`. Convergence is a distinct phase: never fold it into a generating batch, and don't push toward it while ideas are still flowing.
## Resuming
Picking up an existing session instead of starting fresh: load `references/resume.md` and follow it.
## Wrap-Up
Load `references/finalize.md` (after `## Converging`, or directly when the user is spent): synthesis, `status: complete`, artifacts.