:root { --primary-color: #2962FF; --primary-dark: #1A237E; --light-grey: #F7F8FC; --medium-grey: #E8E9EC; --dark-grey: #6C757D; --text-color: #212121; --white-color: #FFFFFF; --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); --border-radius: 8px; } body { font-family: 'Inter', sans-serif; background-color: var(--light-grey); color: var(--text-color); margin: 0; font-size: 14px; } .app-layout { display: flex; } /* Sidebar */ .sidebar { width: 240px; background-color: var(--white-color); height: 100vh; padding: 24px; border-right: 1px solid var(--medium-grey); display: flex; flex-direction: column; } .sidebar-nav { flex-grow: 1; } .auth-nav { list-style: none; padding: 0; margin: 0; } .sidebar-header h2 { font-weight: 700; color: var(--primary-dark); margin: 0 0 40px 0; font-size: 24px; } .sidebar-nav ul { list-style: none; padding: 0; margin: 0; } .sidebar-nav li a { display: flex; align-items: center; padding: 12px 16px; text-decoration: none; color: var(--dark-grey); border-radius: var(--border-radius); font-weight: 500; transition: background-color 0.2s ease, color 0.2s ease; } .sidebar-nav li.active a, .sidebar-nav li a:hover { background-color: var(--primary-color); color: var(--white-color); } .sidebar-nav li a svg { margin-right: 12px; width: 20px; height: 20px; } /* Main Content */ .main-content { flex-grow: 1; padding: 32px 48px; overflow-y: auto; } .main-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px; } .main-header h1 { font-size: 28px; font-weight: 700; color: var(--primary-dark); } .header-actions { display: flex; align-items: center; gap: 16px; } .search-bar { display: flex; align-items: center; background-color: var(--white-color); border-radius: var(--border-radius); padding: 8px 12px; border: 1px solid var(--medium-grey); } .search-bar svg { color: var(--dark-grey); width: 18px; } .search-bar input { border: none; outline: none; margin-left: 8px; font-size: 14px; background: transparent; } .btn-primary { background-color: var(--primary-color); color: var(--white-color); padding: 10px 16px; border-radius: var(--border-radius); text-decoration: none; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; border: none; cursor: pointer; transition: background-color 0.2s ease; } .btn-primary:hover { background-color: var(--primary-dark); } .btn-secondary { background-color: var(--white-color); color: var(--text-color); padding: 10px 16px; border-radius: var(--border-radius); text-decoration: none; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--medium-grey); cursor: pointer; transition: background-color 0.2s ease; } /* Project Cards */ .content-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 24px; } .project-card { background-color: var(--white-color); border-radius: var(--border-radius); box-shadow: var(--card-shadow); overflow: hidden; display: flex; flex-direction: column; transition: transform 0.2s ease, box-shadow 0.2s ease; } .project-card:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0,0,0,0.08); } .card-header { padding: 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--medium-grey); } .card-header h3 { margin: 0; font-size: 16px; font-weight: 600; } .card-body { padding: 16px; flex-grow: 1; } .card-body p { margin: 0 0 8px 0; } .card-footer { padding: 16px; display: flex; justify-content: space-between; align-items: center; background-color: var(--light-grey); } .participants .avatars { display: flex; margin-top: 4px; } .participants .avatars img { width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--white-color); margin-left: -8px; } .btn-view { color: var(--primary-color); text-decoration: none; font-weight: 600; } /* Badges */ .badge { padding: 4px 8px; border-radius: 12px; font-size: 12px; font-weight: 500; } .badge.status-planowane { background-color: #E3F2FD; color: #1565C0; } .badge.status-w toku { background-color: #FFF3E0; color: #EF6C00; } .badge.status-ukończone { background-color: #E8F5E9; color: #2E7D32; } /* Empty State */ .empty-state { grid-column: 1 / -1; text-align: center; padding: 48px; background-color: var(--white-color); border-radius: var(--border-radius); } .empty-state-icon { margin-bottom: 16px; color: var(--primary-color); } .empty-state-icon svg { width: 48px; height: 48px; } .empty-state h2 { font-size: 20px; font-weight: 600; margin-bottom: 8px; } .empty-state p { color: var(--dark-grey); margin-bottom: 24px; } /* Public Layout */ .public-layout { display: flex; flex-direction: column; min-height: 100vh; } .public-header { display: flex; justify-content: space-between; align-items: center; padding: 24px 48px; border-bottom: 1px solid var(--medium-grey); } .public-header .logo h2 { font-weight: 700; color: var(--primary-dark); margin: 0; font-size: 24px; } .public-actions .btn { text-decoration: none; font-weight: 600; margin-left: 16px; } .public-content { flex-grow: 1; display: flex; justify-content: center; align-items: center; } /* Landing Page */ .landing-page .hero { text-align: center; } .landing-page .hero h1 { font-size: 48px; font-weight: 700; color: var(--primary-dark); margin-bottom: 16px; } .landing-page .hero p { font-size: 18px; color: var(--dark-grey); margin-bottom: 32px; } .btn-lg { padding: 14px 28px; font-size: 16px; } /* Analytics Cards */ .analytics-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 24px; margin-bottom: 32px; } .stat-card { background-color: var(--white-color); border-radius: var(--border-radius); padding: 24px; display: flex; justify-content: space-between; align-items: center; border-left: 4px solid var(--primary-color); box-shadow: var(--card-shadow); transition: transform 0.2s ease, box-shadow 0.2s ease; } .stat-card:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0,0,0,0.08); } .stat-card .stat-info h3 { margin: 0 0 4px 0; font-size: 14px; color: var(--dark-grey); font-weight: 500; } .stat-card .stat-info .stat-number { margin: 0; font-size: 28px; font-weight: 700; color: var(--text-color); } .stat-card .stat-icon { color: var(--dark-grey); } .stat-card .stat-icon svg { width: 32px; height: 32px; } .stat-card.planned { border-left-color: #EF6C00; } .stat-card.in-progress { border-left-color: #673AB7; } .stat-card.completed { border-left-color: #2E7D32; } /* Auth Card */ .auth-card { background-color: var(--white-color); border-radius: var(--border-radius); box-shadow: var(--card-shadow); padding: 48px; width: 100%; max-width: 450px; } .auth-card-header h2 { font-size: 24px; font-weight: 700; color: var(--primary-dark); margin-bottom: 8px; } .auth-card-header p { color: var(--dark-grey); margin-bottom: 32px; } .auth-card form p { margin-bottom: 16px; } .auth-card form label { display: block; margin-bottom: 8px; font-weight: 600; } .auth-card form input { width: 100%; padding: 12px; border-radius: var(--border-radius); border: 1px solid var(--medium-grey); font-size: 14px; } .auth-card form .btn-primary { width: 100%; justify-content: center; padding: 14px; font-size: 16px; } /* Form Card */ .form-card { background-color: var(--white-color); border-radius: var(--border-radius); box-shadow: var(--card-shadow); padding: 32px; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; } .form-group { margin-bottom: 16px; } .form-group.full-width { grid-column: 1 / -1; } .form-group label { display: block; margin-bottom: 8px; font-weight: 600; } .form-group input, .form-group select { width: 100%; padding: 12px; border-radius: var(--border-radius); border: 1px solid var(--medium-grey); font-size: 14px; box-sizing: border-box; } .form-actions { margin-top: 32px; display: flex; gap: 16px; }