@tailwind base; @tailwind components; @tailwind utilities; :root { color-scheme: light; } * { -webkit-tap-highlight-color: transparent; } html, body, #root { height: 100%; } body { margin: 0; font-family: Inter, system-ui, sans-serif; background: #f6f7fb; color: #0f172a; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } /* Custom scrollbars */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 9999px; border: 2px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-thumb:hover { background: #9ca3af; background-clip: padding-box; } /* FullCalendar overrides */ .fc { --fc-border-color: #eef0f4; --fc-page-bg-color: #ffffff; --fc-neutral-bg-color: #fafbfd; --fc-today-bg-color: #eef4ff; --fc-now-indicator-color: #f17616; --fc-button-bg-color: #ffffff; --fc-button-border-color: #e5e7eb; --fc-button-text-color: #374151; --fc-button-hover-bg-color: #f9fafb; --fc-button-hover-border-color: #d1d5db; --fc-button-active-bg-color: #3b66ff; --fc-button-active-border-color: #3b66ff; font-family: Inter, system-ui, sans-serif; } .fc .fc-toolbar-title { font-size: 1.15rem; font-weight: 700; color: #0f172a; } .fc .fc-toolbar.fc-header-toolbar { position: sticky; top: 0; z-index: 10; background: #ffffff; padding: 0.4rem 0.6rem; margin: -0.4rem -0.6rem 0; flex-wrap: wrap; gap: 0.5rem 0.75rem; } .fc .fc-toolbar-chunk { display: flex; } .fc .fc-toolbar-chunk .fc-button-group { flex-wrap: wrap; } @media (max-width: 640px) { .fc .fc-toolbar-title { font-size: 1rem; width: 100%; text-align: left; order: -1; } .fc .fc-toolbar-chunk { flex: 1 1 auto; } .fc .fc-toolbar-chunk:last-child { margin-left: auto; } .fc .fc-button { padding: 0.35rem 0.55rem; font-size: 0.72rem; } } .fc .fc-button { border-radius: 0.6rem; padding: 0.4rem 0.75rem; font-weight: 600; font-size: 0.8rem; text-transform: capitalize; box-shadow: none !important; } .fc .fc-button:not(:disabled):not(.fc-button-active):hover { background: #f3f4f6; } .fc .fc-button-primary:not(:disabled).fc-button-active { color: #ffffff; background: var(--fc-button-active-bg-color, #3b66ff); border-color: var(--fc-button-active-border-color, #3b66ff); } .fc .fc-button-primary:not(:disabled).fc-button-active:hover { background: #2447f5; border-color: #2447f5; color: #ffffff; } .fc .fc-button:disabled { opacity: 0.5; } .fc .fc-col-header-cell-cushion { padding: 0.6rem 0; font-weight: 600; font-size: 0.72rem; letter-spacing: 0.05em; text-transform: uppercase; color: #6b7280; } .fc .fc-daygrid-day-number, .fc .fc-col-header-cell-cushion { text-decoration: none; } .fc .fc-daygrid-day { transition: background 0.12s; } .fc .fc-daygrid-day:hover { background: #fafbfd; } .fc-event { border: none !important; border-radius: 0.45rem !important; padding: 2px 5px !important; font-size: 0.74rem !important; font-weight: 600 !important; cursor: pointer; transition: transform 0.12s, box-shadow 0.12s; overflow: hidden; } .fc-event:hover { transform: translateY(-1px); box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.25); } .fc-daygrid-event { margin-top: 2px; } .fc .fc-timegrid-slot { height: 2.4rem; } .fc-timegrid-event { overflow: hidden; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35); } .fc-timegrid-event-harness { margin-right: 2px !important; } /* When slotEventOverlap is false, FullCalendar puts a small gap between side-by-side events; tighten it a touch so each event gets more readable width without bleeding into its neighbour. */ .fc .fc-timegrid-col-events { column-gap: 2px; } /* List view (great on mobile) */ .fc .fc-list { border: none; } .fc .fc-list-day-cushion { background: #fafbfd; font-weight: 700; color: #0f172a; padding: 0.6rem 0.9rem; } .fc .fc-list-event-time { font-weight: 600; color: #4b5563; font-size: 0.78rem; } .fc .fc-list-event-title { font-weight: 600; color: #0f172a; } .fc .fc-list-event:hover td { background: #f9fafb; } .fc .fc-list-empty { background: transparent; color: #94a3b8; padding: 2.5rem 1rem; font-weight: 500; } /* Mobile: prevent squished week/month columns by giving them a min-width. The card wrapper has overflow-x-auto, so wider grids scroll horizontally. */ @media (max-width: 640px) { .fc-timeGridWeek-view .fc-scrollgrid-section > table, .fc-timeGridWeek-view .fc-scrollgrid { min-width: 640px; } .fc-dayGridMonth-view .fc-scrollgrid-section > table, .fc-dayGridMonth-view .fc-scrollgrid { min-width: 560px; } /* bigger touch targets for events */ .fc-event { min-height: 28px; padding: 3px 6px !important; } .fc .fc-button { padding: 0.4rem 0.6rem; } } /* Utility classes */ .card { background: #ffffff; border: 1px solid #eef0f4; border-radius: 1rem; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04); } .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.4rem; font-weight: 600; border-radius: 0.65rem; padding: 0.55rem 0.95rem; font-size: 0.875rem; transition: all 0.15s; cursor: pointer; border: 1px solid transparent; white-space: nowrap; } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn-primary { background: #3b66ff; color: #ffffff; } .btn-primary:hover:not(:disabled) { background: #2447f5; } .btn-secondary { background: #ffffff; color: #374151; border-color: #e5e7eb; } .btn-secondary:hover:not(:disabled) { background: #f9fafb; border-color: #d1d5db; } .btn-ghost { background: transparent; color: #4b5563; } .btn-ghost:hover:not(:disabled) { background: #f3f4f6; } .btn-danger { background: #fee2e2; color: #b91c1c; } .btn-danger:hover:not(:disabled) { background: #fecaca; } @layer components { .input, .select, .textarea { width: 100%; background: #ffffff; border: 1px solid #e5e7eb; border-radius: 0.65rem; padding: 0.55rem 0.75rem; font-size: 0.875rem; color: #0f172a; transition: border-color 0.15s, box-shadow 0.15s; outline: none; } .input:focus, .select:focus, .textarea:focus { border-color: #3b66ff; box-shadow: 0 0 0 3px rgba(59, 102, 255, 0.15); } } .label { display: block; font-size: 0.78rem; font-weight: 600; color: #4b5563; margin-bottom: 0.3rem; } .chip { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.15rem 0.55rem; border-radius: 9999px; font-size: 0.72rem; font-weight: 600; }