Files
Leon SerfatyandClaude Opus 4.8 c9968531e4 Consolidate audit-fixes branch: webhooks, integrations, and deploy hardening
Batch commit of the pending working tree on security/audit-fixes-2026-07.
Major areas:
- Outbound webhooks / Zapier: schema + signed delivery with retries, public
  v1 API (REST-hook subscribe/unsubscribe), settings UI, cron drain.
- Deploy hardening: email via SMTP2GO (Resend fully removed), verified DB TLS
  (DATABASE_SSL=require + DATABASE_CA), storage fails loud in production when
  Spaces is unconfigured instead of silently using ephemeral disk.
- Integrations & features (concurrent work): accounting (QuickBooks/Xero),
  e-signature (DocuSign/Dropbox Sign), PayPal, geocoding/maps, onboarding,
  expanded legal pages.
- DB migrations 0006–0009.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 13:42:34 -04:00

148 lines
3.5 KiB
CSS

/* Dark theme for FullCalendar, scoped to .fc-dark to match the app's aesthetic. */
.fc-dark {
--fc-border-color: rgba(255, 255, 255, 0.06);
--fc-page-bg-color: transparent;
--fc-neutral-bg-color: rgba(255, 255, 255, 0.02);
--fc-neutral-text-color: rgba(255, 255, 255, 0.5);
--fc-today-bg-color: rgba(99, 102, 241, 0.1);
--fc-now-indicator-color: #6366f1;
--fc-list-event-hover-bg-color: rgba(255, 255, 255, 0.04);
--fc-highlight-color: rgba(99, 102, 241, 0.15);
}
.fc-dark .fc {
color: rgba(255, 255, 255, 0.85);
font-family: inherit;
}
/* Toolbar */
.fc-dark .fc .fc-toolbar.fc-header-toolbar {
margin-bottom: 1rem;
flex-wrap: wrap;
gap: 0.5rem;
}
.fc-dark .fc .fc-toolbar-title {
font-size: 1.05rem;
font-weight: 700;
color: #fff;
}
.fc-dark .fc .fc-button {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.7);
box-shadow: none;
text-transform: none;
font-size: 0.78rem;
font-weight: 500;
padding: 0.35rem 0.7rem;
border-radius: 0.55rem;
}
.fc-dark .fc .fc-button:hover {
background: rgba(255, 255, 255, 0.1);
color: #fff;
border-color: rgba(255, 255, 255, 0.14);
}
.fc-dark .fc .fc-button:focus,
.fc-dark .fc .fc-button:active {
box-shadow: none !important;
outline: none;
}
.fc-dark .fc .fc-button-primary:not(:disabled).fc-button-active,
.fc-dark .fc .fc-button-primary:not(:disabled):active {
background: #4f46e5;
border-color: #4f46e5;
color: #fff;
}
.fc-dark .fc .fc-button:disabled {
opacity: 0.4;
}
.fc-dark .fc .fc-button-group > .fc-button {
margin: 0;
}
/* Grid headers + cells */
.fc-dark .fc .fc-col-header-cell-cushion {
color: rgba(255, 255, 255, 0.4);
font-size: 0.68rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 0.6rem 0.4rem;
}
.fc-dark .fc .fc-daygrid-day-number {
color: rgba(255, 255, 255, 0.5);
font-size: 0.78rem;
padding: 0.4rem 0.5rem;
}
.fc-dark .fc .fc-day-today .fc-daygrid-day-number {
color: #a5b4fc;
font-weight: 700;
}
.fc-dark .fc .fc-daygrid-day.fc-day-other {
background: rgba(255, 255, 255, 0.012);
}
.fc-dark .fc .fc-daygrid-day.fc-day-other .fc-daygrid-day-number {
opacity: 0.35;
}
/* Events */
.fc-dark .fc .fc-event {
border-radius: 6px;
border: none;
font-size: 0.72rem;
font-weight: 500;
padding: 1px 5px;
cursor: pointer;
}
.fc-dark .fc .fc-event:hover {
filter: brightness(1.12);
}
.fc-dark .fc .fc-daygrid-event .fc-event-title {
font-weight: 500;
}
.fc-dark .fc .fc-daygrid-more-link {
color: rgba(255, 255, 255, 0.4);
font-size: 0.68rem;
font-weight: 600;
}
.fc-dark .fc .fc-daygrid-more-link:hover {
color: #fff;
}
.fc-dark .fc .fc-popover {
background: #16161f;
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 0.75rem;
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5);
}
.fc-dark .fc .fc-popover-header {
background: rgba(255, 255, 255, 0.04);
color: #fff;
}
/* Time grid (week/day) */
.fc-dark .fc .fc-timegrid-slot-label-cushion,
.fc-dark .fc .fc-timegrid-axis-cushion {
color: rgba(255, 255, 255, 0.35);
font-size: 0.68rem;
}
/* List / agenda view */
.fc-dark .fc .fc-list {
border-color: var(--fc-border-color);
}
.fc-dark .fc .fc-list-day-cushion {
background: rgba(255, 255, 255, 0.03);
color: #fff;
}
.fc-dark .fc .fc-list-event:hover td {
background: rgba(255, 255, 255, 0.04);
}
.fc-dark .fc .fc-list-event-title,
.fc-dark .fc .fc-list-event-time {
color: rgba(255, 255, 255, 0.8);
}
.fc-dark .fc .fc-list-empty {
background: transparent;
color: rgba(255, 255, 255, 0.3);
}