| |
|
|
| |
| :root { |
| |
| --primary: 210 56% 27%; |
| --secondary: 217 67% 42%; |
| --background: 210 11% 98%; |
| --text: 222 84% 25%; |
| |
| |
| --success: 158 64% 39%; |
| --warning: 25 95% 53%; |
| --danger: 0 84% 60%; |
| --info: 200 98% 39%; |
| --accent: 260 83% 57%; |
| |
| |
| --muted: 215 16% 47%; |
| --light: 210 20% 98%; |
| --border: 214 32% 91%; |
| |
| |
| --primary-light: 210 56% 27% / 0.1; |
| --success-light: 158 64% 39% / 0.1; |
| --warning-light: 25 95% 53% / 0.1; |
| --danger-light: 0 84% 60% / 0.1; |
| --info-light: 200 98% 39% / 0.1; |
| |
| |
| --spacing-xs: 0.25rem; |
| --spacing-sm: 0.5rem; |
| --spacing-md: 1rem; |
| --spacing-lg: 1.5rem; |
| --spacing-xl: 2rem; |
| --spacing-2xl: 3rem; |
| |
| |
| --radius-sm: 0.375rem; |
| --radius-md: 0.5rem; |
| --radius-lg: 0.75rem; |
| --radius-xl: 1rem; |
| |
| |
| --shadow-sm: 0 1px 2px 0 hsl(0 0% 0% / 0.05); |
| --shadow-md: 0 4px 6px -1px hsl(0 0% 0% / 0.1), 0 2px 4px -2px hsl(0 0% 0% / 0.1); |
| --shadow-lg: 0 10px 15px -3px hsl(0 0% 0% / 0.1), 0 4px 6px -4px hsl(0 0% 0% / 0.1); |
| --shadow-xl: 0 20px 25px -5px hsl(0 0% 0% / 0.1), 0 8px 10px -6px hsl(0 0% 0% / 0.1); |
| } |
|
|
| |
| body { |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; |
| background-color: hsl(var(--background)); |
| color: hsl(var(--text)); |
| line-height: 1.6; |
| } |
|
|
| |
| h1, h2, h3, h4, h5, h6 { |
| color: hsl(var(--text)); |
| font-weight: 600; |
| } |
|
|
| .text-primary { color: hsl(var(--primary)) !important; } |
| .text-secondary { color: hsl(var(--secondary)) !important; } |
| .text-success { color: hsl(var(--success)) !important; } |
| .text-warning { color: hsl(var(--warning)) !important; } |
| .text-danger { color: hsl(var(--danger)) !important; } |
| .text-info { color: hsl(var(--info)) !important; } |
| .text-muted { color: hsl(var(--muted)) !important; } |
|
|
| |
| .bg-primary { background-color: hsl(var(--primary)) !important; } |
| .bg-secondary { background-color: hsl(var(--secondary)) !important; } |
| .bg-success { background-color: hsl(var(--success)) !important; } |
| .bg-warning { background-color: hsl(var(--warning)) !important; } |
| .bg-danger { background-color: hsl(var(--danger)) !important; } |
| .bg-info { background-color: hsl(var(--info)) !important; } |
| .bg-light { background-color: hsl(var(--light)) !important; } |
|
|
| .btn-primary { |
| background-color: hsl(var(--primary)); |
| border-color: hsl(var(--primary)); |
| color: white; |
| } |
|
|
| .btn-primary:hover { |
| background-color: hsl(210 56% 22%); |
| border-color: hsl(210 56% 22%); |
| } |
|
|
| .btn-outline-primary { |
| border-color: hsl(var(--primary)); |
| color: hsl(var(--primary)); |
| } |
|
|
| .btn-outline-primary:hover { |
| background-color: hsl(var(--primary)); |
| border-color: hsl(var(--primary)); |
| color: white; |
| } |
|
|
| |
| .navbar-brand { |
| font-weight: 700; |
| font-size: 1.25rem; |
| } |
|
|
| .nav-link { |
| font-weight: 500; |
| transition: all 0.2s ease; |
| } |
|
|
| .nav-link:hover { |
| transform: translateY(-1px); |
| } |
|
|
| .nav-link.active { |
| background-color: rgba(255, 255, 255, 0.1) !important; |
| border-radius: var(--radius-sm); |
| } |
|
|
| |
| .card { |
| border: 1px solid hsl(var(--border)); |
| border-radius: var(--radius-lg); |
| transition: all 0.2s ease; |
| } |
|
|
| .card:hover { |
| box-shadow: var(--shadow-lg); |
| } |
|
|
| .card-header { |
| background-color: transparent; |
| border-bottom: 1px solid hsl(var(--border)); |
| font-weight: 600; |
| } |
|
|
| |
| .stats-card { |
| background: linear-gradient(135deg, white 0%, hsl(var(--light)) 100%); |
| border: none; |
| transition: all 0.3s ease; |
| } |
|
|
| .stats-card:hover { |
| transform: translateY(-2px); |
| box-shadow: var(--shadow-xl); |
| } |
|
|
| .stats-icon { |
| width: 48px; |
| height: 48px; |
| border-radius: var(--radius-lg); |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 1.25rem; |
| } |
|
|
| .bg-primary-light { background-color: hsl(var(--primary-light)); } |
| .bg-success-light { background-color: hsl(var(--success-light)); } |
| .bg-warning-light { background-color: hsl(var(--warning-light)); } |
| .bg-danger-light { background-color: hsl(var(--danger-light)); } |
| .bg-info-light { background-color: hsl(var(--info-light)); } |
|
|
| .stats-number { |
| font-size: 2rem; |
| font-weight: 700; |
| color: hsl(var(--text)); |
| line-height: 1; |
| } |
|
|
| .stats-label { |
| font-size: 0.875rem; |
| color: hsl(var(--muted)); |
| font-weight: 500; |
| } |
|
|
| |
| .patient-card { |
| background: white; |
| border: 1px solid hsl(var(--border)); |
| border-radius: var(--radius-md); |
| transition: all 0.2s ease; |
| } |
|
|
| .patient-card:hover { |
| border-color: hsl(var(--primary)); |
| box-shadow: var(--shadow-md); |
| } |
|
|
| |
| .patient-avatar, .user-avatar { |
| width: 40px; |
| height: 40px; |
| } |
|
|
| .patient-avatar-large { |
| width: 80px; |
| height: 80px; |
| } |
|
|
| .avatar-circle { |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--secondary))); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: white; |
| font-weight: 600; |
| font-size: 0.875rem; |
| } |
|
|
| .avatar-circle-large { |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--secondary))); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| color: white; |
| font-weight: 700; |
| font-size: 1.5rem; |
| } |
|
|
| |
| .timeline { |
| position: relative; |
| padding-left: 2rem; |
| } |
|
|
| .timeline::before { |
| content: ''; |
| position: absolute; |
| left: 1rem; |
| top: 0; |
| bottom: 0; |
| width: 2px; |
| background: linear-gradient(to bottom, hsl(var(--primary)), hsl(var(--light))); |
| } |
|
|
| .timeline-item { |
| position: relative; |
| margin-bottom: 2rem; |
| } |
|
|
| .timeline-marker { |
| position: absolute; |
| left: -2.5rem; |
| top: 0.5rem; |
| width: 2rem; |
| height: 2rem; |
| background: white; |
| border: 2px solid hsl(var(--primary)); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| z-index: 1; |
| } |
|
|
| .timeline-content { |
| margin-left: 1rem; |
| } |
|
|
| |
| .followup-date { |
| background: hsl(var(--light)); |
| border-radius: var(--radius-md); |
| padding: 0.5rem; |
| min-width: 60px; |
| } |
|
|
| .date-day { |
| font-size: 1.25rem; |
| font-weight: 700; |
| color: hsl(var(--primary)); |
| line-height: 1; |
| } |
|
|
| .date-month { |
| font-size: 0.75rem; |
| color: hsl(var(--muted)); |
| text-transform: uppercase; |
| font-weight: 600; |
| } |
|
|
| |
| .login-body { |
| background: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(var(--secondary)) 100%); |
| min-height: 100vh; |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .login-container { |
| position: relative; |
| z-index: 2; |
| } |
|
|
| .login-card { |
| backdrop-filter: blur(10px); |
| background: rgba(255, 255, 255, 0.95); |
| border-radius: var(--radius-xl); |
| } |
|
|
| .login-logo { |
| display: flex; |
| justify-content: center; |
| } |
|
|
| .logo-circle { |
| width: 80px; |
| height: 80px; |
| background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--secondary))); |
| border-radius: 50%; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 2rem; |
| color: white; |
| box-shadow: var(--shadow-lg); |
| } |
|
|
| .login-form .input-group-text { |
| background: hsl(var(--light)); |
| border-color: hsl(var(--border)); |
| } |
|
|
| .login-form .form-control { |
| border-color: hsl(var(--border)); |
| background: white; |
| } |
|
|
| .login-form .form-control:focus { |
| border-color: hsl(var(--primary)); |
| box-shadow: 0 0 0 0.2rem hsl(var(--primary-light)); |
| } |
|
|
| |
| .medical-pattern { |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| overflow: hidden; |
| z-index: 1; |
| } |
|
|
| .pattern-element { |
| position: absolute; |
| color: rgba(255, 255, 255, 0.1); |
| font-size: 3rem; |
| animation: float 6s ease-in-out infinite; |
| } |
|
|
| .pattern-element:nth-child(2n) { |
| animation-delay: -2s; |
| } |
|
|
| .pattern-element:nth-child(3n) { |
| animation-delay: -4s; |
| } |
|
|
| @keyframes float { |
| 0%, 100% { |
| transform: translateY(0px) rotate(0deg); |
| } |
| 50% { |
| transform: translateY(-20px) rotate(10deg); |
| } |
| } |
|
|
| |
| .admin-nav-card { |
| transition: all 0.3s ease; |
| cursor: pointer; |
| } |
|
|
| .admin-nav-card:hover { |
| transform: translateY(-5px); |
| box-shadow: var(--shadow-xl); |
| } |
|
|
| .admin-icon { |
| opacity: 0.8; |
| transition: all 0.3s ease; |
| } |
|
|
| .admin-nav-card:hover .admin-icon { |
| opacity: 1; |
| transform: scale(1.1); |
| } |
|
|
| |
| .template-card { |
| transition: all 0.2s ease; |
| } |
|
|
| .template-card:hover { |
| border-color: hsl(var(--primary)); |
| box-shadow: var(--shadow-md); |
| } |
|
|
| |
| .guidelines-list { |
| font-size: 0.875rem; |
| } |
|
|
| .guideline-item h6 { |
| font-size: 1rem; |
| margin-bottom: 0.75rem; |
| } |
|
|
| .guideline-item ul li { |
| margin-bottom: 0.25rem; |
| color: hsl(var(--muted)); |
| } |
|
|
| |
| .form-label { |
| font-weight: 600; |
| color: hsl(var(--text)); |
| margin-bottom: 0.5rem; |
| } |
|
|
| .form-control, .form-select { |
| border: 1px solid hsl(var(--border)); |
| border-radius: var(--radius-sm); |
| transition: all 0.2s ease; |
| } |
|
|
| .form-control:focus, .form-select:focus { |
| border-color: hsl(var(--primary)); |
| box-shadow: 0 0 0 0.2rem hsl(var(--primary-light)); |
| } |
|
|
| |
| .table th { |
| font-weight: 600; |
| color: hsl(var(--text)); |
| border-color: hsl(var(--border)); |
| } |
|
|
| .table td { |
| border-color: hsl(var(--border)); |
| vertical-align: middle; |
| } |
|
|
| .table-hover tbody tr:hover { |
| background-color: hsl(var(--light)); |
| } |
|
|
| |
| .badge { |
| font-weight: 500; |
| padding: 0.5rem 0.75rem; |
| border-radius: var(--radius-sm); |
| } |
|
|
| |
| .btn { |
| font-weight: 500; |
| border-radius: var(--radius-sm); |
| transition: all 0.2s ease; |
| } |
|
|
| .btn:hover { |
| transform: translateY(-1px); |
| } |
|
|
| .btn-sm { |
| font-size: 0.8125rem; |
| padding: 0.375rem 0.75rem; |
| } |
|
|
| |
| @media (max-width: 768px) { |
| .stats-number { |
| font-size: 1.5rem; |
| } |
| |
| .timeline { |
| padding-left: 1.5rem; |
| } |
| |
| .timeline::before { |
| left: 0.75rem; |
| } |
| |
| .timeline-marker { |
| left: -0.5rem; |
| width: 1.5rem; |
| height: 1.5rem; |
| } |
| |
| .patient-avatar-large { |
| width: 60px; |
| height: 60px; |
| } |
| |
| .avatar-circle-large { |
| font-size: 1.25rem; |
| } |
| } |
|
|
| |
| @media print { |
| .navbar, |
| .btn, |
| .card-header .btn, |
| .modal { |
| display: none !important; |
| } |
| |
| .card { |
| border: 1px solid #ddd !important; |
| box-shadow: none !important; |
| } |
| |
| body { |
| background: white !important; |
| } |
| } |
|
|
| |
| @media (prefers-reduced-motion: reduce) { |
| *, |
| *::before, |
| *::after { |
| animation-duration: 0.01ms !important; |
| animation-iteration-count: 1 !important; |
| transition-duration: 0.01ms !important; |
| scroll-behavior: auto !important; |
| } |
| } |
|
|
| |
| .btn:focus, |
| .form-control:focus, |
| .form-select:focus { |
| outline: 2px solid hsl(var(--primary)); |
| outline-offset: 2px; |
| } |
|
|
| |
| @media (prefers-contrast: high) { |
| .card { |
| border-width: 2px; |
| } |
| |
| .btn-outline-primary { |
| border-width: 2px; |
| } |
| } |
|
|
| |
| @media (prefers-color-scheme: dark) { |
| :root { |
| --background: 222 84% 5%; |
| --text: 210 11% 98%; |
| --border: 215 16% 25%; |
| --light: 215 16% 15%; |
| } |
| } |
|
|