diff --git a/.claude/ux-guidelines.md b/.claude/ux-guidelines.md index 5ea2c05..a2fb143 100644 --- a/.claude/ux-guidelines.md +++ b/.claude/ux-guidelines.md @@ -348,3 +348,24 @@ Returning users should control repeated guidance. The workspace should remain the primary visual focus. Information should naturally flow from left to right. + +## Attention Hierarchy + +The current task always owns the user's attention. + +Supporting information should remain available without competing. + +Visual emphasis should come primarily from hierarchy rather than colour. + +Reduce distraction before adding decoration. + +Calm interfaces improve reasoning. + +Hierarchy flows from strongest to quietest: + +1. The current investigation question (strongest visual element) +2. The response area (interactive, clear action) +3. Supporting context (visible but restrained) +4. Reference material (available, low priority) + +The workspace should feel like an active desk — the work in progress is prominent, supporting tools are within reach but not shouting for attention. diff --git a/components/investigation-map.jsx b/components/investigation-map.jsx index e220a83..210afbc 100644 --- a/components/investigation-map.jsx +++ b/components/investigation-map.jsx @@ -82,15 +82,15 @@ export default function InvestigationMap({ turnCount = 0 }) { if (!hasActiveTopics && groups.established.length === 0) return null; return ( -
-

+
+

Investigation Map

-

+

Active investigation topics and their status.

-
+
{topics.map((topic, i) => ( ))} diff --git a/components/investigation-summary-panel.jsx b/components/investigation-summary-panel.jsx index 072cdbd..09ec9ae 100644 --- a/components/investigation-summary-panel.jsx +++ b/components/investigation-summary-panel.jsx @@ -62,10 +62,10 @@ function InvestigationSummaryPanel({ graph, selectedQuestion, result, updateStat } const statusColors = { - idle: { border: "border-gray-200", bg: "bg-gray-50", text: "text-gray-600" }, - investigating: { border: "border-blue-200", bg: "bg-blue-50", text: "text-blue-700" }, - complete: { border: "border-green-200", bg: "bg-green-50", text: "text-green-700" }, - limit: { border: "border-gray-300", bg: "bg-gray-100", text: "text-gray-500" }, + idle: { border: "border-gray-200/60", bg: "bg-gray-50/40", text: "text-gray-400" }, + investigating: { border: "border-blue-200/60", bg: "bg-blue-50/30", text: "text-blue-600" }, + complete: { border: "border-green-200/60", bg: "bg-green-50/30", text: "text-green-600" }, + limit: { border: "border-gray-200", bg: "bg-gray-50/40", text: "text-gray-400" }, }; const colors = statusColors[currentStatus.level] || statusColors.idle; @@ -125,10 +125,10 @@ function InvestigationSummaryPanel({ graph, selectedQuestion, result, updateStat {/* Current understanding */} {currentUnderstanding && (
-

+

What we understand so far

-

{currentUnderstanding}

+

{currentUnderstanding}

)} diff --git a/components/reasoning-workspace.jsx b/components/reasoning-workspace.jsx index bb1c708..67868be 100644 --- a/components/reasoning-workspace.jsx +++ b/components/reasoning-workspace.jsx @@ -99,8 +99,8 @@ function UnexpectedStateCard({ stateName, onRetry, onRestart }) { function ContinueLaterBanner({ onRestart }) { return ( -
-

+

+

Your previous investigation state is still saved. You can continue where you left off or start fresh.

{onRestart && ( @@ -248,13 +248,13 @@ function CurrentInvestigationCard({ selectedQuestion, graph }) { } return ( -
-

+
+

Investigation

-

{q}

+

{q}

{whyMattersText && ( -

+

{whyMattersText}

)} @@ -317,11 +317,11 @@ function CurrentUnderstandingCard({ currentSummary, plainLanguage }) { if (!summary) return null; return ( -
-

+
+

Understanding

-

{summary}

+

{summary}

); } @@ -331,11 +331,11 @@ function PlainLanguageCard({ summary }) { if (!summary) return null; return ( -
-

+
+

Understanding

-

{summary}

+

{summary}

); } @@ -352,7 +352,7 @@ function InvestigationHistoryCard({ turn }) { return (
-

+

History

@@ -402,12 +402,12 @@ function OriginalSituation({ scenario, centralStatement }) { if (!text) return null; return ( -
-

+
+

Situation

-

+

{text}

@@ -440,7 +440,7 @@ function UpdateAcknowledgement({ updateResult }) { className="transition-all duration-1500 ease-in" style={{ opacity: visible ? 0.7 : 0, maxHeight: visible ? "4rem" : "0", marginBottom: visible ? "1rem" : "0" }} > -
+
{summary}
@@ -450,11 +450,11 @@ function UpdateAcknowledgement({ updateResult }) { // ── Developer details disclosure ────────────────────────────── function DeveloperDetails({ graph, selectedQuestion, diagnostics, newlySurfacedNodeIds, updateResult }) { return ( -
- +
+ Developer details -
+
{graph && ( +
- Working through your situation + Working through your situation
-

{statusText}

-

+

{statusText}

+

This has been running for {elapsed}s. {variant === "initial" && elapsed >= 45 && ( This can take around a minute with the current local model. diff --git a/components/scenario-form.jsx b/components/scenario-form.jsx index 17b6738..e609d56 100644 --- a/components/scenario-form.jsx +++ b/components/scenario-form.jsx @@ -395,18 +395,18 @@ export default function ScenarioForm() { {/* Left panel — Facilitator (1/3 on desktop) */} {!hideFacilitatorOnLanding && (

-
-

Before we begin

-

+

+

Before we begin

+

The Confidence Engine helps build confidence by understanding situations before deciding what to do.

-

+

You do not need to know exactly what the problem is.

-

+

Simply describe what you have observed. We will work through it together, one question at a time.

-
+
-

Tell me what's happening

+

Tell me what's happening