Week simulation engine: 5 business days, 4-8 contracts per day, 3 rotating staffers with handoffs between days. Runs hybrid search per contract via the gateway. 28 contracts, 108/108 filled (100%), 5 emergencies, 4 handoffs, 3.2s total. Dashboard at :3700/ — dark theme, shows: - Contract cards sorted by priority with match status - Day navigation across the work week - Week summary stats (fill rate, emergencies, handoffs) - Live alerts (erratic/silent workers) - Playbook entries - Real-time service health + VRAM Self-orientation (/context) + verification (/verify) endpoints so any agent can understand the system and fact-check claims without human intermediary. Accessible on LAN at http://192.168.1.177:3700 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
23 lines
2.7 KiB
CSS
23 lines
2.7 KiB
CSS
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { font-family: 'SF Mono', 'Fira Code', monospace; background: #0a0a0f; color: #e0e0e0; }
|
|
.header { background: linear-gradient(135deg, #1a1a2e, #16213e); padding: 20px 30px; border-bottom: 2px solid #0f3460; display: flex; justify-content: space-between; align-items: center; }
|
|
.header h1 { font-size: 20px; color: #e94560; }
|
|
.header .status { display: flex; gap: 15px; font-size: 12px; align-items: center; }
|
|
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 4px; }
|
|
.dot.green { background: #00ff88; } .dot.red { background: #ff4444; }
|
|
.grid { display: grid; grid-template-columns: 2fr 1fr; gap: 16px; padding: 16px; max-width: 1400px; margin: 0 auto; }
|
|
.card { background: #12121a; border: 1px solid #1a1a2e; border-radius: 8px; padding: 16px; }
|
|
.card h2 { font-size: 14px; color: #e94560; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 1px; }
|
|
.contract { border-left: 3px solid #0f3460; padding: 10px 14px; margin-bottom: 10px; background: #0d0d15; border-radius: 0 6px 6px 0; }
|
|
.contract.urgent { border-left-color: #e94560; } .contract.high { border-left-color: #ff8c00; } .contract.filled { border-left-color: #00ff88; }
|
|
.contract .title { font-weight: bold; font-size: 13px; } .contract .meta { font-size: 11px; color: #888; margin-top: 4px; }
|
|
.contract .workers { font-size: 11px; color: #aaa; margin-top: 6px; } .contract .workers b { color: #00ff88; }
|
|
.alert { padding: 8px 12px; margin-bottom: 8px; border-radius: 4px; font-size: 12px; }
|
|
.alert.warn { background: #2a1a00; border-left: 3px solid #ffaa00; } .alert.info { background: #001a2a; border-left: 3px solid #00aaff; } .alert.good { background: #002a1a; border-left: 3px solid #00ff88; }
|
|
.playbook { padding: 8px 12px; margin-bottom: 6px; background: #0d0d15; border-radius: 4px; font-size: 11px; } .playbook .op { color: #e94560; }
|
|
.stat-row { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #1a1a2e; font-size: 13px; } .stat-row .val { color: #00ff88; font-weight: bold; }
|
|
.day-nav { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
|
|
.day-btn { padding: 6px 14px; background: #1a1a2e; border: 1px solid #0f3460; color: #e0e0e0; border-radius: 4px; cursor: pointer; font-size: 12px; } .day-btn.active { background: #e94560; border-color: #e94560; color: #fff; }
|
|
.log { font-size: 11px; color: #888; max-height: 250px; overflow-y: auto; } .log div { padding: 3px 0; border-bottom: 1px solid #0d0d15; }
|
|
.refresh-btn { background: #0f3460; border: none; color: #e0e0e0; padding: 6px 16px; border-radius: 4px; cursor: pointer; font-size: 12px; } .refresh-btn:hover { background: #e94560; }
|