Improve cockpit typography for readability across all pages.

Raise base font to 16px, enlarge sidebar, buttons, tables and headings, add Inter font and global typography layer.
This commit is contained in:
Aissa
2026-07-19 18:49:52 +00:00
parent 8d2766efb6
commit ff22498dcd
6 changed files with 206 additions and 27 deletions
+12 -12
View File
@@ -25,13 +25,13 @@
border-bottom: 1px solid rgba(148, 163, 184, 0.08); border-bottom: 1px solid rgba(148, 163, 184, 0.08);
} }
.app-sidebar-brand .brand-title { .app-sidebar-brand .brand-title {
font-size: 0.58rem; font-size: 0.75rem;
letter-spacing: 0.14em; letter-spacing: 0.1em;
color: #64748b; color: #64748b;
margin: 0; margin: 0;
} }
.app-sidebar-brand .brand-name { .app-sidebar-brand .brand-name {
font-size: 0.95rem; font-size: 1.05rem;
font-weight: 700; font-weight: 700;
color: #e2e8f0; color: #e2e8f0;
margin: 0.2rem 0 0; margin: 0.2rem 0 0;
@@ -50,7 +50,7 @@
color: #94a3b8; color: #94a3b8;
border-radius: 8px; border-radius: 8px;
padding: 0.45rem 0.25rem; padding: 0.45rem 0.25rem;
font-size: 0.58rem; font-size: 0.8125rem;
font-weight: 700; font-weight: 700;
letter-spacing: 0.03em; letter-spacing: 0.03em;
text-transform: uppercase; text-transform: uppercase;
@@ -65,8 +65,8 @@
margin-bottom: 0.65rem; margin-bottom: 0.65rem;
} }
.app-sidebar-label { .app-sidebar-label {
font-size: 0.56rem; font-size: 0.75rem;
letter-spacing: 0.12em; letter-spacing: 0.08em;
text-transform: uppercase; text-transform: uppercase;
color: #64748b; color: #64748b;
padding: 0.2rem 0.5rem 0.35rem; padding: 0.2rem 0.5rem 0.35rem;
@@ -80,12 +80,12 @@
gap: 0.5rem; gap: 0.5rem;
width: 100%; width: 100%;
margin: 0 0 0.2rem; margin: 0 0 0.2rem;
padding: 0.5rem 0.55rem; padding: 0.55rem 0.65rem;
border-radius: 8px; border-radius: 8px;
border: 1px solid rgba(148, 163, 184, 0.1); border: 1px solid rgba(148, 163, 184, 0.1);
background: rgba(15, 23, 42, 0.5); background: rgba(15, 23, 42, 0.5);
color: #cbd5e1 !important; color: #cbd5e1 !important;
font-size: 0.78rem; font-size: 0.9375rem;
font-weight: 500; font-weight: 500;
text-decoration: none; text-decoration: none;
text-align: left; text-align: left;
@@ -121,14 +121,14 @@
} }
.sidebar-nav-icon { .sidebar-nav-icon {
width: 26px; width: 28px;
height: 26px; height: 28px;
flex-shrink: 0; flex-shrink: 0;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
border-radius: 6px; border-radius: 6px;
font-size: 0.85rem; font-size: 0.95rem;
background: rgba(8, 12, 18, 0.9); background: rgba(8, 12, 18, 0.9);
border: 1px solid rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.12);
} }
@@ -169,7 +169,7 @@
.persona-badge { .persona-badge {
display: inline-block; display: inline-block;
font-size: 0.62rem; font-size: 0.75rem;
font-weight: 800; font-weight: 800;
letter-spacing: 0.08em; letter-spacing: 0.08em;
padding: 0.15rem 0.45rem; padding: 0.15rem 0.45rem;
+162
View File
@@ -0,0 +1,162 @@
/* Cockpit readability — loads last, harmonizes all modules */
html {
font-size: 16px;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
body {
font-size: var(--text-base, 1rem);
line-height: var(--leading, 1.55);
}
/* Headings */
h1 { font-size: var(--text-3xl, 1.75rem); font-weight: 700; letter-spacing: -0.02em; }
h2 { font-size: var(--text-xl, 1.25rem); font-weight: 600; }
h3 { font-size: var(--text-lg, 1.125rem); font-weight: 600; }
h4 { font-size: var(--text-md, 1.0625rem); font-weight: 600; }
.page-header h1,
.ei-header h1,
.herman-shell.hm-neo .herman-hero h1 {
font-size: 1.75rem !important;
}
.page-header .subtitle,
.ei-subtitle,
.ei-header .ei-subtitle {
font-size: 0.9375rem !important;
line-height: 1.5;
}
.ei-tab-panel-head h2,
.panel-inner h2,
.briefing-card h3 {
font-size: 1.125rem !important;
}
/* Body text minimum */
p, li, td, label, .page-tip {
font-size: max(0.9375rem, 1em);
}
/* Tables */
.ei-table,
.data-table,
.voice-results-table,
.clients-table,
.deals-table {
font-size: 0.9375rem !important;
}
.ei-table th,
.data-table th {
font-size: 0.8125rem !important;
font-weight: 600;
}
.ei-table td,
.data-table td {
padding: 0.6rem 0.75rem !important;
}
/* Buttons & inputs */
.btn {
font-size: 0.9375rem !important;
font-weight: 500;
}
.btn-sm {
font-size: 0.875rem !important;
}
.form-input,
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
font-size: 0.9375rem !important;
}
/* Sidebar nav */
.app-sidebar a.nav-pill {
font-size: 0.9375rem !important;
}
.app-sidebar-label {
font-size: 0.75rem !important;
font-weight: 600;
}
.app-topbar,
.app-clock {
font-size: 0.875rem !important;
}
/* KPI cards */
.ei-neo-kpi-label,
.hm-neo-kpi-label,
.briefing-stat-label,
.stat-label {
font-size: 0.8125rem !important;
}
.ei-neo-kpi-value,
.hm-neo-kpi-value,
.briefing-stat-value {
font-size: 1.65rem !important;
}
/* Tabs & filters */
.vtab-btn,
.vtab-btn-rich,
.ei-filter-label,
.ei-type-chip {
font-size: 0.9375rem !important;
}
.ei-filter-group input,
.ei-filter-group select {
font-size: 0.9375rem !important;
}
/* Badges & pills — readable but compact */
.ei-type-pill,
.ei-halal-pill,
.badge,
.ei-crm-badge,
.live-badge {
font-size: 0.8125rem !important;
}
/* Herman dashboard micro-labels */
.hm-neo-kpi-label,
.hm-section-label,
.herman-shell.hm-neo .hm-card-label {
font-size: 0.8125rem !important;
letter-spacing: 0.06em !important;
}
/* Export intel */
.ei-sync-msg,
.ei-selection-hint,
.ei-map-truncated {
font-size: 0.875rem !important;
}
.ei-drawer-title {
font-size: 1.35rem !important;
}
.ei-drawer-kv,
.ei-popup-row {
font-size: 0.875rem !important;
}
/* Mobile — never shrink below readable */
@media (max-width: 768px) {
html { font-size: 16px; }
.app-sidebar a.nav-pill { font-size: 0.9375rem !important; }
.page-header h1 { font-size: 1.5rem !important; }
}
+9 -8
View File
@@ -12,8 +12,9 @@ body {
background: var(--bg-root); background: var(--bg-root);
color: var(--text-primary); color: var(--text-primary);
font-family: var(--font-sans); font-family: var(--font-sans);
font-size: 14px; font-size: 16px;
line-height: 1.5; line-height: 1.55;
letter-spacing: 0.01em;
} }
a { a {
@@ -155,7 +156,7 @@ html {
.panel h2 { .panel h2 {
margin: 0 0 1rem; margin: 0 0 1rem;
font-size: 0.8rem; font-size: 1.0625rem;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.08em; letter-spacing: 0.08em;
color: var(--text-muted); color: var(--text-muted);
@@ -395,7 +396,7 @@ html {
.data-table { .data-table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
font-size: 0.8125rem; font-size: 0.9375rem;
} }
.data-table th, .data-table th,
@@ -408,7 +409,7 @@ html {
.data-table th { .data-table th {
color: var(--text-muted); color: var(--text-muted);
font-weight: 600; font-weight: 600;
font-size: 0.7rem; font-size: 0.8125rem;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.05em; letter-spacing: 0.05em;
} }
@@ -484,7 +485,7 @@ html {
.drawer.open { transform: translateX(0); } .drawer.open { transform: translateX(0); }
.drawer-close { float: right; background: transparent; border: none; color: var(--text-primary); font-size: 1.5rem; cursor: pointer; } .drawer-close { float: right; background: transparent; border: none; color: var(--text-primary); font-size: 1.5rem; cursor: pointer; }
.btn-group { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; } .btn-group { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.btn-sm { padding: .25rem .55rem; font-size: 12px; } .btn-sm { padding: 0.35rem 0.75rem; font-size: 0.875rem; min-height: 2rem; }
.clickable-row { cursor: pointer; transition: background .15s; } .clickable-row { cursor: pointer; transition: background .15s; }
.clickable-row:hover { background: var(--bg-hover); } .clickable-row:hover { background: var(--bg-hover); }
.clickable-kpi { text-decoration: none; color: inherit; display: block; transition: transform .15s, box-shadow .15s; } .clickable-kpi { text-decoration: none; color: inherit; display: block; transition: transform .15s, box-shadow .15s; }
@@ -511,7 +512,7 @@ html {
.chat-msg.user { background: rgba(0,200,255,.08); } .chat-msg.user { background: rgba(0,200,255,.08); }
.chat-msg.agent { background: var(--bg-root); border: 1px solid var(--border-subtle); } .chat-msg.agent { background: var(--bg-root); border: 1px solid var(--border-subtle); }
.chat-input { display: flex; gap: .5rem; } .chat-input { display: flex; gap: .5rem; }
.page-tip { color: var(--text-muted); font-size: 13px; } .page-tip { color: var(--text-muted); font-size: 0.9375rem; line-height: 1.5; }
.ai-output { white-space: pre-wrap; background: var(--bg-root); padding: 1rem; border-radius: var(--radius-md); min-height: 80px; } .ai-output { white-space: pre-wrap; background: var(--bg-root); padding: 1rem; border-radius: var(--radius-md); min-height: 80px; }
.log-list { list-style: none; padding: 0; max-height: 240px; overflow: auto; } .log-list { list-style: none; padding: 0; max-height: 240px; overflow: auto; }
body.drawer-open { overflow: hidden; } body.drawer-open { overflow: hidden; }
@@ -674,7 +675,7 @@ body.drawer-open { overflow: hidden; }
} }
@media (max-width: 600px) { .settings-form-grid { grid-template-columns: 1fr; } } @media (max-width: 600px) { .settings-form-grid { grid-template-columns: 1fr; } }
.form-label { display: block; font-size: 0.8rem; color: var(--text-muted); margin-bottom: 0.75rem; } .form-label { display: block; font-size: 0.875rem; color: var(--text-muted); margin-bottom: 0.75rem; }
.form-label .form-input { margin-top: 0.25rem; } .form-label .form-input { margin-top: 0.25rem; }
.form-check { display: flex; align-items: center; gap: 0.5rem; margin: 0.75rem 0; font-size: 0.9rem; } .form-check { display: flex; align-items: center; gap: 0.5rem; margin: 0.75rem 0; font-size: 0.9rem; }
+12
View File
@@ -24,6 +24,18 @@
--radius-md: 8px; --radius-md: 8px;
--radius-lg: 12px; --radius-lg: 12px;
--font-sans: "Inter", "Segoe UI", system-ui, sans-serif; --font-sans: "Inter", "Segoe UI", system-ui, sans-serif;
/* Typography scale (16px root) */
--text-xs: 0.8125rem;
--text-sm: 0.875rem;
--text-base: 1rem;
--text-md: 1.0625rem;
--text-lg: 1.125rem;
--text-xl: 1.25rem;
--text-2xl: 1.5rem;
--text-3xl: 1.75rem;
--leading: 1.55;
--leading-tight: 1.35;
--font-mono: "JetBrains Mono", "Fira Code", monospace; --font-mono: "JetBrains Mono", "Fira Code", monospace;
--sidebar-width: 240px; --sidebar-width: 240px;
} }
+4 -4
View File
@@ -75,7 +75,7 @@
border-radius: 8px; border-radius: 8px;
background: transparent; background: transparent;
color: #94a3b8; color: #94a3b8;
font-size: 0.8rem; font-size: 0.9375rem;
font-weight: 500; font-weight: 500;
text-align: left; text-align: left;
cursor: pointer; cursor: pointer;
@@ -158,7 +158,7 @@
} }
.ei-vtab-sub { .ei-vtab-sub {
display: block; display: block;
font-size: 0.62rem; font-size: 0.75rem;
color: #64748b; color: #64748b;
margin-top: 0.1rem; margin-top: 0.1rem;
} }
@@ -169,7 +169,7 @@
gap: 0.15rem; gap: 0.15rem;
} }
.ei-vtab-key { .ei-vtab-key {
font-size: 0.55rem; font-size: 0.6875rem;
color: #475569; color: #475569;
font-family: ui-monospace, monospace; font-family: ui-monospace, monospace;
} }
@@ -203,7 +203,7 @@
.vt-tab-panel-head p, .vt-tab-panel-head p,
.ei-tab-panel-head p { .ei-tab-panel-head p {
margin: 0.1rem 0 0; margin: 0.1rem 0 0;
font-size: 0.72rem; font-size: 0.8125rem;
color: #64748b; color: #64748b;
} }
.vt-tab-panel-body, .vt-tab-panel-body,
+7 -3
View File
@@ -9,19 +9,23 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Foodlinkk" /> <meta name="apple-mobile-web-app-title" content="Foodlinkk" />
<title>{% block title %}{{ page_title }} · Cucina{% endblock %}</title> <title>{% block title %}{{ page_title }} · Cucina{% endblock %}</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" />
<link rel="manifest" href="/static/manifest.json?v=2" /> <link rel="manifest" href="/static/manifest.json?v=2" />
<link rel="icon" href="/static/icons/app-icon.svg" type="image/svg+xml" /> <link rel="icon" href="/static/icons/app-icon.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="/static/icons/app-icon.svg" /> <link rel="apple-touch-icon" href="/static/icons/app-icon.svg" />
<link rel="stylesheet" href="/static/css/palantir-theme.css?v=3" /> <link rel="stylesheet" href="/static/css/palantir-theme.css?v=4" />
<link rel="stylesheet" href="/static/css/pulse-theme.css?v=2" /> <link rel="stylesheet" href="/static/css/pulse-theme.css?v=2" />
<link rel="stylesheet" href="/static/css/topnav-neo.css?v=6" /> <link rel="stylesheet" href="/static/css/topnav-neo.css?v=6" />
<link rel="stylesheet" href="/static/css/vertical-tabs.css?v=8" /> <link rel="stylesheet" href="/static/css/vertical-tabs.css?v=9" />
<link rel="stylesheet" href="/static/css/mobile.css?v=5" /> <link rel="stylesheet" href="/static/css/mobile.css?v=5" />
<link rel="stylesheet" href="/static/css/herman-dashboard.css?v=22" /> <link rel="stylesheet" href="/static/css/herman-dashboard.css?v=22" />
<script defer src="/static/js/alpine.min.js?v=2"></script> <script defer src="/static/js/alpine.min.js?v=2"></script>
<script defer src="/static/js/htmx.min.js?v=2"></script> <script defer src="/static/js/htmx.min.js?v=2"></script>
{% block extra_head %}{% endblock %} {% block extra_head %}{% endblock %}
<link rel="stylesheet" href="/static/css/app-sidebar-neo.css?v=7" /> <link rel="stylesheet" href="/static/css/app-sidebar-neo.css?v=8" />
<link rel="stylesheet" href="/static/css/cockpit-typography.css?v=1" />
<link rel="stylesheet" href="/static/css/herman-assistant.css?v=1" /> <link rel="stylesheet" href="/static/css/herman-assistant.css?v=1" />
</head> </head>
<body x-data="appShell()" x-init="initApp()" :class="{ 'nav-open': navOpen, 'drawer-open': drawerOpen, 'brand-cucina': brand === 'cucina', 'brand-foodlinkk': brand === 'foodlinkk' }"> <body x-data="appShell()" x-init="initApp()" :class="{ 'nav-open': navOpen, 'drawer-open': drawerOpen, 'brand-cucina': brand === 'cucina', 'brand-foodlinkk': brand === 'foodlinkk' }">