<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Board Bias Check - Trustee Decision Tool</title>

    <meta name="description" content="A digital tool to help trustees examine their decision-making and identify potential confirmation bias before board meetings.">

    <script src="https://cdn.tailwindcss.com"></script>

    <style>

        .hidden { display: none; }

        .step-indicator {

            width: 32px;

            height: 32px;

            border-radius: 50%;

            border: 2px solid #d1d5db;

            display: flex;

            align-items: center;

            justify-content: center;

            font-size: 14px;

            font-weight: 500;

            background: white;

            color: #9ca3af;

        }

        .step-indicator.active {

            background: #2563eb;

            color: white;

            border-color: #2563eb;

        }

        .step-indicator.completed {

            background: #059669;

            color: white;

            border-color: #059669;

        }

        .step-line {

            width: 48px;

            height: 2px;

            background: #d1d5db;

        }

        .step-line.completed {

            background: #059669;

        }

    </style>

</head>

<body class="bg-gray-50">

    <div class="max-w-4xl mx-auto p-6 bg-white min-h-screen">

        <!-- Step 1: Define Issue -->

        <div id="step1" class="step-content">

            <div class="mb-8">

                <div class="flex items-center justify-between mb-6">

                    <h1 class="text-3xl font-bold text-gray-900">Board Bias Check</h1>

                    <div class="flex items-center space-x-4">

                        <div class="step-indicator active">1</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">2</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">3</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">4</div>

                    </div>

                </div>

                <p class="text-lg text-gray-600">A tool to help trustees examine their decision-making and identify potential confirmation bias before board meetings.</p>

            </div>


            <div class="bg-blue-50 border border-blue-200 rounded-lg p-6 mb-8">

                <h2 class="text-xl font-semibold text-blue-900 mb-4">Step 1: Define the Issue</h2>

                <p class="text-blue-700 mb-6">Start by clearly describing the challenge, problem, or opportunity your board will be discussing.</p>

                

                <div class="space-y-6">

                    <div>

                        <label class="block text-sm font-medium text-gray-700 mb-2">

                            What is the issue or decision before the board?

                        </label>

                        <textarea

                            id="issue"

                            placeholder="e.g., Whether to approve a $50M capital campaign for new science facilities"

                            class="w-full p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-h-[100px]"

                        ></textarea>

                    </div>

                    

                    <div>

                        <label class="block text-sm font-medium text-gray-700 mb-2">

                            Provide relevant context and background

                        </label>

                        <textarea

                            id="context"

                            placeholder="Include key facts, constraints, timeline, stakeholders involved, previous discussions, etc."

                            class="w-full p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 min-h-[120px]"

                        ></textarea>

                    </div>

                </div>

            </div>


            <div class="flex justify-end">

                <button

                    id="next1"

                    onclick="goToStep(2)"

                    disabled

                    class="flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed"

                >

                    Next: Initial Position

                    <svg class="ml-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>

                    </svg>

                </button>

            </div>

        </div>


        <!-- Step 2: Initial Position -->

        <div id="step2" class="step-content hidden">

            <div class="mb-8">

                <div class="flex items-center justify-between mb-6">

                    <h1 class="text-3xl font-bold text-gray-900">Board Bias Check</h1>

                    <div class="flex items-center space-x-4">

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator active">2</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">3</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">4</div>

                    </div>

                </div>

            </div>


            <div class="bg-gray-50 rounded-lg p-4 mb-6">

                <h3 class="font-medium text-gray-800 mb-2">Issue:</h3>

                <p id="display-issue" class="text-gray-600 text-sm"></p>

            </div>


            <div class="bg-green-50 border border-green-200 rounded-lg p-6 mb-8">

                <h2 class="text-xl font-semibold text-green-900 mb-4">Step 2: Your Initial Position</h2>

                <p class="text-green-700 mb-6">Share your current thinking and the reasoning behind your initial position.</p>

                

                <div class="space-y-6">

                    <div>

                        <label class="block text-sm font-medium text-gray-700 mb-2">

                            What is your initial position or leaning on this issue?

                        </label>

                        <textarea

                            id="position"

                            placeholder="Be specific about what you think the board should do and why"

                            class="w-full p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 focus:border-green-500 min-h-[100px]"

                        ></textarea>

                    </div>

                    

                    <div>

                        <label class="block text-sm font-medium text-gray-700 mb-2">

                            What reasoning and evidence supports your position?

                        </label>

                        <textarea

                            id="reasoning"

                            placeholder="Include the key factors, data, experiences, or principles that inform your thinking"

                            class="w-full p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 focus:border-green-500 min-h-[120px]"

                        ></textarea>

                    </div>

                </div>

            </div>


            <div class="flex justify-between">

                <button

                    onclick="goToStep(1)"

                    class="flex items-center px-6 py-3 border border-gray-300 rounded-lg font-medium text-gray-700 hover:bg-gray-50"

                >

                    <svg class="mr-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>

                    </svg>

                    Back

                </button>

                <button

                    id="next2"

                    onclick="goToStep(3)"

                    disabled

                    class="flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed"

                >

                    Next: Challenge Your Thinking

                    <svg class="ml-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>

                    </svg>

                </button>

            </div>

        </div>


        <!-- Step 3: Devil's Advocate Questions -->

        <div id="step3" class="step-content hidden">

            <div class="mb-8">

                <div class="flex items-center justify-between mb-6">

                    <h1 class="text-3xl font-bold text-gray-900">Board Bias Check</h1>

                    <div class="flex items-center space-x-4">

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator active">3</div>

                        <div class="step-line"></div>

                        <div class="step-indicator">4</div>

                    </div>

                </div>

            </div>


            <div class="bg-orange-50 border border-orange-200 rounded-lg p-6 mb-8">

                <div class="flex items-center mb-4">

                    <svg class="w-5 h-5 text-orange-600 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z"></path>

                    </svg>

                    <h2 class="text-xl font-semibold text-orange-900">Step 3: Devil's Advocate Questions</h2>

                </div>

                <p class="text-orange-700 mb-4">These questions are designed to challenge your thinking and help identify potential blind spots. Answer as many as feel relevant - even partial responses can be valuable.</p>

            </div>


            <div class="space-y-8" id="questions-container">

                <!-- Questions will be populated by JavaScript -->

            </div>


            <div class="mt-8 bg-gray-50 rounded-lg p-4">

                <p class="text-sm text-gray-600">

                    <strong>Progress:</strong> <span id="progress">0</span> of 6 questions answered

                </p>

            </div>


            <div class="flex justify-between mt-8">

                <button

                    onclick="goToStep(2)"

                    class="flex items-center px-6 py-3 border border-gray-300 rounded-lg font-medium text-gray-700 hover:bg-gray-50"

                >

                    <svg class="mr-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>

                    </svg>

                    Back

                </button>

                <button

                    id="next3"

                    onclick="goToStep(4)"

                    disabled

                    class="flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed"

                >

                    Generate Report

                    <svg class="ml-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>

                    </svg>

                </button>

            </div>

        </div>


        <!-- Step 4: Report -->

        <div id="step4" class="step-content hidden">

            <div class="mb-8">

                <div class="flex items-center justify-between mb-6">

                    <h1 class="text-3xl font-bold text-gray-900">Board Bias Check</h1>

                    <div class="flex items-center space-x-4">

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator completed">✓</div>

                        <div class="step-line completed"></div>

                        <div class="step-indicator active">4</div>

                    </div>

                </div>

            </div>


            <div class="bg-purple-50 border border-purple-200 rounded-lg p-6 mb-8">

                <div class="flex items-center mb-4">

                    <svg class="w-5 h-5 text-purple-600 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"></path>

                    </svg>

                    <h2 class="text-xl font-semibold text-purple-900">Your Pre-Meeting Report</h2>

                </div>

                <p class="text-purple-700">Review your refined thinking below. This summary can help guide your contributions to the board discussion.</p>

            </div>


            <div id="report-content">

                <!-- Report will be generated by JavaScript -->

            </div>


            <div class="flex justify-between mt-8">

                <button

                    onclick="goToStep(3)"

                    class="flex items-center px-6 py-3 border border-gray-300 rounded-lg font-medium text-gray-700 hover:bg-gray-50"

                >

                    <svg class="mr-2 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">

                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>

                    </svg>

                    Back to Questions

                </button>

                <button

                    onclick="startOver()"

                    class="flex items-center px-6 py-3 bg-gray-600 text-white rounded-lg font-medium hover:bg-gray-700"

                >

                    Start New Analysis

                </button>

            </div>

        </div>

    </div>


    <footer class="mt-16 py-8 border-t border-gray-200 bg-gray-50">

        <div class="max-w-4xl mx-auto px-6 text-center text-gray-600">

            <p class="text-sm">Board Bias Check - A tool for thoughtful governance</p>

            <p class="text-xs mt-2">© 2025 - Helping trustees make better decisions</p>

        </div>

    </footer>


    <script>

        // Application state

        let currentStep = 1;

        let formData = {

            issue: '',

            context: '',

            position: '',

            reasoning: '',

            answers: {}

        };


        const questions = [

            {

                category: "Evidence Challenge",

                question: "What concrete evidence contradicts your initial position? What data or facts might you be overlooking or dismissing?",

                followUp: "How would a skeptical outsider interpret this same evidence?"

            },

            {

                category: "Stakeholder Impact",

                question: "Which stakeholders might be negatively affected by your proposed approach? Whose voices might not be represented in your current thinking?",

                followUp: "What would those affected stakeholders say if they were in the room?"

            },

            {

                category: "Alternative Solutions",

                question: "What are three completely different approaches to this issue that you haven't seriously considered? Why might each be superior?",

                followUp: "What would happen if you delayed this decision for 6 months?"

            },

            {

                category: "Unintended Consequences",

                question: "What could go wrong with your preferred approach? What second and third-order effects might emerge?",

                followUp: "How might this decision look in 5 years if circumstances change?"

            },

            {

                category: "Resource Reality",

                question: "Are you being realistic about the true costs (financial, time, political capital) of your position? What are you not accounting for?",

                followUp: "What would you sacrifice or delay to make this happen?"

            },

            {

                category: "Institutional Precedent",

                question: "What precedent does this decision set? How might future boards use this as justification for decisions you wouldn't support?",

                followUp: "Would you be comfortable if your biggest institutional rival made the same decision?"

            }

        ];


        // Navigation functions

        function goToStep(step) {

            // Save current form data

            saveCurrentStepData();

            

            // Hide all steps

            document.querySelectorAll('.step-content').forEach(el => el.classList.add('hidden'));

            

            // Show target step

            document.getElementById('step' + step).classList.remove('hidden');

            currentStep = step;

            

            // Update step-specific content

            if (step === 2) {

                document.getElementById('display-issue').textContent = formData.issue;

            } else if (step === 3) {

                populateQuestions();

            } else if (step === 4) {

                generateReport();

            }

        }


        function saveCurrentStepData() {

            if (currentStep === 1) {

                formData.issue = document.getElementById('issue').value;

                formData.context = document.getElementById('context').value;

            } else if (currentStep === 2) {

                formData.position = document.getElementById('position').value;

                formData.reasoning = document.getElementById('reasoning').value;

            } else if (currentStep === 3) {

                // Save answers

                questions.forEach((q, index) => {

                    const textarea = document.getElementById('answer-' + index);

                    if (textarea) {

                        formData.answers[index] = textarea.value;

                    }

                });

            }

        }


        function populateQuestions() {

            const container = document.getElementById('questions-container');

            container.innerHTML = '';

            

            questions.forEach((item, index) => {

                const questionDiv = document.createElement('div');

                questionDiv.className = 'border border-gray-200 rounded-lg p-6';

                questionDiv.innerHTML = `

                    <div class="mb-4">

                        <span class="inline-block bg-orange-100 text-orange-800 text-xs font-medium px-2.5 py-0.5 rounded-full mb-2">

                            ${item.category}

                        </span>

                        <h3 class="text-lg font-medium text-gray-900 mb-2">${item.question}</h3>

                        <p class="text-sm text-gray-600 italic">${item.followUp}</p>

                    </div>

                    <textarea

                        id="answer-${index}"

                        placeholder="Take time to thoughtfully consider this question..."

                        class="w-full p-4 border border-gray-300 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-orange-500 min-h-[100px]"

                        oninput="updateProgress()"

                    >${formData.answers[index] || ''}</textarea>

                `;

                container.appendChild(questionDiv);

            });

            

            updateProgress();

        }


        function updateProgress() {

            let answered = 0;

            questions.forEach((q, index) => {

                const textarea = document.getElementById('answer-' + index);

                if (textarea && textarea.value.trim().length > 0) {

                    answered++;

                }

            });

            

            document.getElementById('progress').textContent = answered;

            

            // Enable/disable next button

            const nextBtn = document.getElementById('next3');

            if (answered > 0) {

                nextBtn.disabled = false;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-orange-600 text-white hover:bg-orange-700';

            } else {

                nextBtn.disabled = true;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed';

            }

        }


        function generateReport() {

            let answeredQuestions = 0;

            let insights = [];

            

            questions.forEach((q, index) => {

                const answer = formData.answers[index];

                if (answer && answer.trim().length > 0) {

                    answeredQuestions++;

                    insights.push({

                        category: q.category,

                        question: q.question,

                        reflection: answer

                    });

                }

            });

            

            const completionRate = Math.round((answeredQuestions / questions.length) * 100);

            

            const reportContent = document.getElementById('report-content');

            reportContent.innerHTML = `

                <div class="space-y-6">

                    <div class="bg-white border border-gray-200 rounded-lg p-6">

                        <h3 class="text-lg font-semibold text-gray-900 mb-3">Issue Under Consideration</h3>

                        <p class="text-gray-700">${formData.issue}</p>

                    </div>


                    <div class="bg-white border border-gray-200 rounded-lg p-6">

                        <h3 class="text-lg font-semibold text-gray-900 mb-3">Your Initial Position</h3>

                        <p class="text-gray-700 mb-4">${formData.position}</p>

                        <div class="bg-gray-50 rounded p-4">

                            <h4 class="font-medium text-gray-800 mb-2">Supporting Reasoning:</h4>

                            <p class="text-gray-600 text-sm">${formData.reasoning}</p>

                        </div>

                    </div>


                    <div class="bg-white border border-gray-200 rounded-lg p-6">

                        <h3 class="text-lg font-semibold text-gray-900 mb-3">

                            Challenges Explored (${answeredQuestions} of ${questions.length})

                        </h3>

                        ${insights.length > 0 ? `

                            <div class="space-y-4">

                                ${insights.map(insight => `

                                    <div class="border-l-4 border-orange-400 pl-4">

                                        <div class="flex items-center mb-2">

                                            <span class="bg-orange-100 text-orange-800 text-xs font-medium px-2 py-1 rounded">

                                                ${insight.category}

                                            </span>

                                        </div>

                                        <p class="text-sm text-gray-600 mb-2 italic">${insight.question}</p>

                                        <p class="text-gray-800">${insight.reflection}</p>

                                    </div>

                                `).join('')}

                            </div>

                        ` : `

                            <p class="text-gray-500 italic">No challenges were explored. Consider going back to strengthen your analysis.</p>

                        `}

                    </div>


                    <div class="bg-blue-50 border border-blue-200 rounded-lg p-6">

                        <h3 class="text-lg font-semibold text-blue-900 mb-3">Preparation Complete</h3>

                        <p class="text-blue-700 mb-4">

                            You've completed ${completionRate}% of the bias check process. 

                            ${completionRate >= 50 

                                ? "You're well-prepared to contribute thoughtfully to the board discussion."

                                : "Consider exploring additional challenges to strengthen your preparation."

                            }

                        </p>

                        <div class="bg-blue-100 rounded p-4">

                            <h4 class="font-medium text-blue-800 mb-2">For the Board Meeting:</h4>

                            <ul class="text-blue-700 text-sm space-y-1">

                                <li>• Share key insights from your devil's advocate analysis</li>

                                <li>• Listen for perspectives that address your identified concerns</li>

                                <li>• Be open to changing your position based on new information</li>

                                <li>• Help ensure all stakeholder impacts are considered</li>

                            </ul>

                        </div>

                    </div>

                </div>

            `;

        }


        function startOver() {

            currentStep = 1;

            formData = {

                issue: '',

                context: '',

                position: '',

                reasoning: '',

                answers: {}

            };

            

            // Reset all form fields

            document.getElementById('issue').value = '';

            document.getElementById('context').value = '';

            document.getElementById('position').value = '';

            document.getElementById('reasoning').value = '';

            

            goToStep(1);

        }


        // Form validation

        function validateStep1() {

            const issue = document.getElementById('issue').value.trim();

            const context = document.getElementById('context').value.trim();

            const nextBtn = document.getElementById('next1');

            

            if (issue.length > 0 && context.length > 0) {

                nextBtn.disabled = false;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-blue-600 text-white hover:bg-blue-700';

            } else {

                nextBtn.disabled = true;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed';

            }

        }


        function validateStep2() {

            const position = document.getElementById('position').value.trim();

            const reasoning = document.getElementById('reasoning').value.trim();

            const nextBtn = document.getElementById('next2');

            

            if (position.length > 0 && reasoning.length > 0) {

                nextBtn.disabled = false;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-green-600 text-white hover:bg-green-700';

            } else {

                nextBtn.disabled = true;

                nextBtn.className = 'flex items-center px-6 py-3 rounded-lg font-medium bg-gray-300 text-gray-500 cursor-not-allowed';

            }

        }


        // Event listeners

        document.addEventListener('DOMContentLoaded', function() {

            document.getElementById('issue').addEventListener('input', validateStep1);

            document.getElementById('context').addEventListener('input', validateStep1);

            document.getElementById('position').addEventListener('input', validateStep2);

            document.getElementById('reasoning').addEventListener('input', validateStep2);

        });

    </script>

</body>

</html>