/* ============================================= GLOBAL STYLES — shared variables, resets, scrollbars ============================================= */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); :root { --left-col-width: 260px; --cell-width: 155px; --h-eod: 42px; --h-status: 34px; --h-dates: 62px; --primary-soft: #f8fafc; --border-color: #e8ecf1; --highlight-bg: rgba(59, 130, 246, 0.08); --highlight-border: rgba(59, 130, 246, 0.35); --brand-blue: #2563eb; --brand-blue-light: #dbeafe; --brand-indigo: #4f46e5; --text-primary: #1e293b; --text-secondary: #64748b; --text-muted: #94a3b8; --bg-page: #f8fafc; --bg-card: #ffffff; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-xl: 20px; --shadow-sm: 0 1px 2px rgba(0,0,0,0.04); --shadow-md: 0 4px 12px rgba(0,0,0,0.06); --shadow-lg: 0 8px 30px rgba(0,0,0,0.08); } /* MOBILE OPTIMIZATION */ @media (max-width: 599px) { :root { --left-col-width: 170px; --cell-width: 130px; } } body, html { height: 100%; overflow: hidden; margin: 0; padding: 0; background-color: var(--bg-page); color: var(--text-primary); font-family: 'Inter', 'Roboto', -apple-system, BlinkMacSystemFont, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } * { box-sizing: border-box; } /* Quasar overrides */ .q-field--outlined.q-field--rounded .q-field__control { border-radius: var(--radius-md); } .q-btn--rounded { border-radius: var(--radius-md); } .q-card { border-radius: var(--radius-lg) !important; } /* Override Quasar fonts */ .q-toolbar-title, .q-item__label, .q-field__native, .q-btn__content { font-family: 'Inter', 'Roboto', sans-serif !important; } /* Smooth scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: #d1d5db; border-radius: 20px; border: 2px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-thumb:hover { background-color: #9ca3af; } /* Badge styles for skills/roles */ .skill-badge { display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 10px; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; line-height: 18px; white-space: nowrap; } .skill-badge--blue { background: #dbeafe; color: #1d4ed8; } .skill-badge--green { background: #dcfce7; color: #15803d; } .skill-badge--red { background: #fee2e2; color: #dc2626; } .skill-badge--orange { background: #ffedd5; color: #c2410c; } .skill-badge--purple { background: #f3e8ff; color: #7c3aed; } .skill-badge--pink { background: #fce7f3; color: #db2777; } .skill-badge--teal { background: #ccfbf1; color: #0d9488; } .skill-badge--gray { background: #f1f5f9; color: #64748b; } .skill-badge--indigo { background: #e0e7ff; color: #4338ca; } /* Status dot */ .status-dot { width: 10px; height: 10px; border-radius: 50%; border: 2px solid white; position: absolute; bottom: -1px; right: -1px; z-index: 2; } .status-dot--online { background: #22c55e; } .status-dot--away { background: #f59e0b; } .status-dot--busy { background: #ef4444; } .status-dot--offline { background: #d1d5db; } /* Transitions */ .fade-enter-active, .fade-leave-active { transition: opacity 0.2s ease; } .fade-enter-from, .fade-leave-to { opacity: 0; }