crimata-os/ui/styles/cursor.css
Andrew Gundersen 31b5e321a1 Add crimata-agent and redesign agentic OS UI
- crimata-agent (TypeScript, port 7702): WebSocket server + HTTP /events
  endpoint, Claude tool-use loop (render/remove/call_api/show_cursor_response),
  session.start fires on first browser connection to seed the canvas
- OS UI redesigned: light grey canvas (#e8e8e8), no dock bar, cursor dot,
  Cmd+Space input bubble above cursor, elements placed by agent
- Canvas elements: app_icon (floating icons with running dot), window (no-chrome
  content cards), cursor_response (text + action pills)
- Component system: HTML fragments fetched from /components/{app}/{name}.html,
  inline scripts re-executed after injection
- contacts/crimata.json: added icon, defaultComponent, components[], api[]
- dock: apps.h/c/main.c extended to parse and serve components + api from
  crimata.json; BUF_SIZE increased for richer JSON output
- ui/components/contacts/list.html + card.html: first component pair
- provision.sh: installs crimata-agent, adds WebSocket + /events + /components
  nginx locations, fixes /auth/ prefix stripping

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 15:52:05 -05:00

39 lines
771 B
CSS

/* Hide system cursor everywhere */
* { cursor: none !important; }
/* Dot cursor */
#cursor-dot {
position: fixed;
width: 8px;
height: 8px;
background: #1a1a1a;
border-radius: 50%;
pointer-events: none;
transform: translate(-50%, -50%);
z-index: 9999;
transition: width 0.1s, height 0.1s;
}
/* Input bubble — anchored to cursor position via inline style */
#cursor-bubble {
position: fixed;
transform: translate(-50%, calc(-100% - 14px));
z-index: 9998;
pointer-events: auto;
}
#cursor-input {
background: white;
border: none;
border-radius: 20px;
padding: 9px 18px;
font-size: 14px;
color: #1a1a1a;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.14);
outline: none;
width: 280px;
}
#cursor-input::placeholder {
color: #aaa;
}