From 4c5757fc631e8199cd08af2ad5f2fcb74c0cf556 Mon Sep 17 00:00:00 2001 From: Nick Beckley Date: Sun, 14 Jun 2026 14:44:24 +0100 Subject: [PATCH] Phase 10M.1: Word Companion Visual Polish --- PlotLine/wwwroot/css/word-companion.css | 182 +++++++++++++++--------- 1 file changed, 114 insertions(+), 68 deletions(-) diff --git a/PlotLine/wwwroot/css/word-companion.css b/PlotLine/wwwroot/css/word-companion.css index 01becd6..291c67b 100644 --- a/PlotLine/wwwroot/css/word-companion.css +++ b/PlotLine/wwwroot/css/word-companion.css @@ -1,12 +1,14 @@ :root { - --companion-ink: #1e252b; - --companion-muted: #66717b; - --companion-paper: #fbfaf7; - --companion-panel: #ffffff; - --companion-line: #d8ddd8; - --companion-accent: #2f6f63; - --companion-accent-dark: #22534a; - --companion-soft: #eef5f2; + --companion-ink: #2d241d; + --companion-muted: #7b7168; + --companion-paper: #f8f1e6; + --companion-panel: #fffaf2; + --companion-line: #e1d3bf; + --companion-accent: #6f4b2d; + --companion-accent-dark: #4a321f; + --companion-gold: #b68a46; + --companion-soft: #f3eadc; + --companion-soft-strong: #ead9c1; } * { @@ -21,17 +23,17 @@ body { margin: 0; min-width: 280px; color: var(--companion-ink); - background: #f4f6f4; + background: var(--companion-paper); font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif; } .word-companion-shell { display: grid; - gap: 10px; + gap: 9px; width: 100%; max-width: 420px; min-height: 100vh; - padding: 10px; + padding: 10px 11px; } .word-companion-header { @@ -40,7 +42,7 @@ body { justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--companion-line); - padding-bottom: 8px; + padding-bottom: 7px; } .word-companion-eyebrow { @@ -56,6 +58,7 @@ body { margin: 0; font-size: 1.12rem; line-height: 1.1; + color: var(--companion-accent-dark); } .word-companion-status, @@ -87,29 +90,35 @@ body { } .word-companion-tabs { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 3px; + display: flex; + flex-wrap: wrap; + gap: 4px; border: 1px solid var(--companion-line); - border-radius: 8px; - padding: 3px; - background: #ffffff; + border-radius: 9px; + padding: 4px; + background: #fff7eb; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75); } .word-companion-tabs button { - min-height: 30px; + flex: 1 1 70px; + min-width: 0; + min-height: 29px; border: 0; - border-radius: 6px; + border-radius: 7px; background: transparent; color: var(--companion-muted); font: inherit; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 800; + line-height: 1; + padding: 0 7px; } .word-companion-tabs button.is-active { - background: var(--companion-accent); - color: #ffffff; + background: linear-gradient(180deg, #7b5432 0%, var(--companion-accent-dark) 100%); + color: #fff9ef; + box-shadow: 0 1px 3px rgba(74, 50, 31, 0.18); } .word-companion-tab-panel { @@ -119,11 +128,12 @@ body { .word-companion-section { display: grid; - gap: 7px; + gap: 8px; border: 1px solid var(--companion-line); border-radius: 8px; padding: 10px; background: var(--companion-panel); + box-shadow: 0 1px 2px rgba(74, 50, 31, 0.05); } .word-companion-section span, @@ -141,18 +151,18 @@ body { .word-companion-section select { width: 100%; - min-height: 32px; + min-height: 34px; border: 1px solid var(--companion-line); border-radius: 6px; padding: 6px 8px; - background: #ffffff; + background: #fffdf8; color: var(--companion-ink); font: inherit; } .word-companion-connection { - grid-template-columns: 1fr 1fr; - gap: 8px; + grid-template-columns: 1fr; + gap: 9px; } .word-companion-connection .word-companion-message { @@ -168,25 +178,25 @@ body { display: flex; align-items: center; justify-content: space-between; - gap: 8px; + gap: 7px; } .word-companion-header-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; - gap: 6px; + gap: 5px; } .word-companion-section-header button { - min-height: 30px; + min-height: 29px; border: 1px solid var(--companion-accent); border-radius: 6px; - padding: 5px 9px; + padding: 5px 8px; background: var(--companion-accent); - color: #ffffff; + color: #fff9ef; font: inherit; - font-size: 0.78rem; + font-size: 0.76rem; font-weight: 700; } @@ -200,24 +210,24 @@ body { .word-companion-actions { display: grid; grid-template-columns: 1fr 1fr; - gap: 8px; + gap: 7px; } .word-companion-actions button { - min-height: 34px; + min-height: 33px; border: 1px solid var(--companion-accent); border-radius: 6px; padding: 6px 8px; - background: #ffffff; + background: #fffdf8; color: var(--companion-accent-dark); font: inherit; - font-size: 0.84rem; + font-size: 0.82rem; font-weight: 800; } .word-companion-actions .word-companion-primary-action { - background: var(--companion-accent); - color: #ffffff; + background: linear-gradient(180deg, #7b5432 0%, var(--companion-accent-dark) 100%); + color: #fff9ef; } .word-companion-actions button:disabled { @@ -249,7 +259,7 @@ body { .word-companion-section strong { min-width: 0; - font-size: 0.98rem; + font-size: 0.96rem; overflow-wrap: anywhere; } @@ -261,18 +271,20 @@ body { } .word-companion-scene-card { - border: 1px solid rgba(47, 111, 99, 0.18); + border: 1px solid rgba(111, 75, 45, 0.2); border-radius: 8px; padding: 10px; background: var(--companion-soft); } .word-companion-scene-summary { - gap: 9px; + gap: 8px; } .word-companion-title-row strong { + color: var(--companion-accent-dark); font-size: 1rem; + line-height: 1.25; } .word-companion-badges { @@ -286,10 +298,10 @@ body { align-items: center; width: fit-content; min-height: 24px; - border: 1px solid rgba(47, 111, 99, 0.24); + border: 1px solid rgba(111, 75, 45, 0.24); border-radius: 999px; padding: 3px 8px; - background: #ffffff; + background: #fffaf2; color: var(--companion-accent-dark) !important; font-size: 0.74rem !important; font-weight: 800 !important; @@ -307,17 +319,19 @@ body { .word-companion-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 7px; } .word-companion-metrics div { - border: 1px solid rgba(47, 111, 99, 0.16); + border: 1px solid rgba(111, 75, 45, 0.16); border-radius: 6px; padding: 7px; - background: #ffffff; + background: #fffdf8; } .word-companion-metrics strong { - font-size: 0.92rem; + color: var(--companion-accent-dark); + font-size: 0.91rem; } .word-companion-sync-meta { @@ -340,7 +354,7 @@ body { .word-companion-scene-details, .word-companion-link-groups { display: grid; - gap: 8px; + gap: 7px; } .word-companion-resolve-diagnostics div, @@ -353,10 +367,18 @@ body { .word-companion-resolve-diagnostics { padding-top: 4px; grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 6px; } .word-companion-resolve-diagnostics strong { - font-size: 0.86rem; + color: var(--companion-ink); + font-size: 0.8rem; + line-height: 1.25; +} + +.word-companion-resolve-diagnostics span { + font-size: 0.68rem; + letter-spacing: 0.01em; } .word-companion-progress-sync { @@ -389,7 +411,7 @@ body { margin: 0; border: 1px solid var(--companion-line); border-radius: 6px; - padding: 8px; + padding: 9px; background: var(--companion-soft); color: var(--companion-ink); font-size: 0.9rem; @@ -399,7 +421,7 @@ body { .word-companion-check-list { display: grid; - gap: 5px; + gap: 4px; } .word-companion-check-item { @@ -407,11 +429,11 @@ body { grid-template-columns: auto 1fr; align-items: center; gap: 7px; - min-height: 30px; - border: 1px solid rgba(47, 111, 99, 0.18); + min-height: 29px; + border: 1px solid rgba(111, 75, 45, 0.18); border-radius: 6px; padding: 5px 7px; - background: #ffffff; + background: #fffdf8; color: var(--companion-ink); font-size: 0.9rem; } @@ -436,11 +458,12 @@ body { } .word-companion-create-link { - border-color: rgba(47, 111, 99, 0.38); + border-color: rgba(182, 138, 70, 0.45); + background: #fff8ec; } .word-companion-structure-preview { - border-color: rgba(47, 111, 99, 0.28); + border-color: rgba(182, 138, 70, 0.35); } .word-companion-preview-groups, @@ -452,7 +475,7 @@ body { .word-companion-preview-group { border-top: 1px solid var(--companion-line); - padding-top: 8px; + padding-top: 7px; } .word-companion-preview-group:first-child { @@ -461,10 +484,10 @@ body { } .word-companion-preview-item { - border: 1px solid rgba(47, 111, 99, 0.18); + border: 1px solid rgba(111, 75, 45, 0.16); border-radius: 6px; padding: 7px; - background: #ffffff; + background: #fffdf8; } .word-companion-preview-item span, @@ -541,7 +564,7 @@ body { border: 1px solid var(--companion-line); border-radius: 6px; padding: 6px 8px; - background: #ffffff; + background: #fffdf8; color: var(--companion-ink); font: inherit; } @@ -552,7 +575,7 @@ body { border-radius: 6px; padding: 5px 9px; background: var(--companion-accent); - color: #ffffff; + color: #fff9ef; font: inherit; font-size: 0.82rem; font-weight: 700; @@ -577,10 +600,10 @@ body { align-items: center; gap: 7px; min-height: 32px; - border: 1px solid rgba(47, 111, 99, 0.18); + border: 1px solid rgba(111, 75, 45, 0.18); border-radius: 6px; padding: 5px 7px; - background: #ffffff; + background: #fffdf8; color: var(--companion-ink); font-size: 0.9rem; } @@ -600,7 +623,7 @@ body { .word-companion-outline { display: grid; - gap: 8px; + gap: 7px; padding-top: 4px; } @@ -630,7 +653,7 @@ body { .word-companion-summary { display: grid; gap: 8px; - border: 1px solid rgba(47, 111, 99, 0.18); + border: 1px solid rgba(111, 75, 45, 0.18); border-radius: 8px; padding: 12px; background: var(--companion-soft); @@ -648,7 +671,8 @@ body { } .word-companion-collapsible { - gap: 10px; + gap: 8px; + background: #fff8ec; } .word-companion-collapsible:not([open]) > :not(summary) { @@ -675,5 +699,27 @@ body { .word-companion-footer { border-top: 1px solid var(--companion-line); margin-top: auto; - padding-top: 12px; + padding-top: 7px; + font-size: 0.76rem; +} + +@media (min-width: 390px) { + .word-companion-connection { + grid-template-columns: 1fr 1fr; + } +} + +@media (max-width: 340px) { + .word-companion-tabs button { + flex-basis: calc(50% - 4px); + } + + .word-companion-metrics, + .word-companion-resolve-diagnostics { + grid-template-columns: 1fr; + } + + .word-companion-actions { + grid-template-columns: 1fr; + } }