Add live CEO briefing, Wereldexport CRM, halal engine, and realtime cockpit.

Ship export intel with contact filters and CRM push, Herman live digest with Telegram briefing, halal recommendation engine, revenue cockpit, and dashboard polling/WebSocket fixes.
This commit is contained in:
Aissa
2026-07-19 18:25:01 +00:00
parent 544d9e611d
commit 4dd1b8265f
25 changed files with 2757 additions and 108 deletions
+75 -1
View File
@@ -34,11 +34,85 @@
@media (max-width: 900px) { .hm-dash-two-col { grid-template-columns: 1fr; } }
.briefing-summary-grid {
display: grid; grid-template-columns: 1.2fr 1fr; gap: 1rem;
display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;
}
.briefing-card.summary { grid-column: 1 / -1; }
.briefing-horizon-col { display: grid; gap: 1rem; }
@media (max-width: 900px) { .briefing-summary-grid { grid-template-columns: 1fr; } }
.live-digest-body {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 0.75rem;
}
@media (max-width: 1100px) { .live-digest-body { grid-template-columns: 1fr; } }
.live-digest-section {
background: rgba(0, 0, 0, 0.22);
border-radius: 10px;
padding: 0.75rem 0.85rem;
border: 1px solid rgba(255, 255, 255, 0.06);
}
.live-digest-section.brand-foodlinkk { border-left: 3px solid #fbbf24; }
.live-digest-section.brand-cucina { border-left: 3px solid #fb923c; }
.live-digest-section.brand-platform { border-left: 3px solid var(--hm-cyan); }
.live-digest-section.brand-news { border-left: 3px solid #a855f7; }
.live-digest-section h5 {
margin: 0 0 0.45rem;
font-size: 0.68rem;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 700;
}
.live-digest-section.brand-foodlinkk h5 { color: #fbbf24; }
.live-digest-section.brand-cucina h5 { color: #fdba74; }
.live-digest-section.brand-platform h5 { color: var(--hm-cyan); }
.live-digest-section.brand-news h5 { color: #c4b5fd; }
.live-digest-list {
margin: 0;
padding: 0;
list-style: none;
display: flex;
flex-direction: column;
gap: 0.35rem;
}
.live-digest-list li {
font-size: 0.82rem;
line-height: 1.45;
color: #e2e8f0;
padding-left: 0.65rem;
border-left: 2px solid rgba(255, 255, 255, 0.08);
}
.live-digest-list li.is-typing::after {
content: '▋';
display: inline-block;
margin-left: 1px;
color: var(--hm-cyan);
animation: twCursorBlink 0.85s step-end infinite;
font-weight: 400;
vertical-align: baseline;
}
.live-digest-body.is-typing .live-digest-section {
animation: twSectionIn 0.35s ease-out both;
}
@keyframes twCursorBlink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
@keyframes twSectionIn {
from { opacity: 0.4; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
.horizon-card ul li.is-typing::after {
content: '▋';
color: #ff9f43;
animation: twCursorBlink 0.85s step-end infinite;
margin-left: 1px;
}
.briefing-card.summary,
.horizon-card {
background: var(--hm-panel); border-radius: 14px; padding: 1rem;