:root { --primary: #4a5568; --primary-dark: #d10e1d; --secondary: #3f37c9; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --archive: #6c757d; --work: #28a745; --custom: #000; --business: #17a2b8; --home: #e83e8c; --section-bg: #f8f9fa; --section-hover: #e9ecef; --section-active: #e9ecef; --card-shadow: 0 4px 20px rgba(0,0,0,0.05); --transition: all 0.25s cubic-bezier(0.645, 0.045, 0.355, 1); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; } body { display: flex; background-color: #f5f7fa; color: var(--dark); line-height: 1.6; } /* Боковое меню */ .sidebar { width: 320px; background: white; height: 100vh; position: fixed; box-shadow: 2px 0 20px rgba(0,0,0,0.05); padding: 20px 0; overflow-y: auto; display: flex; flex-direction: column; z-index: 100; transition: var(--transition); } .sidebar-content { flex: 1; overflow-y: auto; padding: 0 15px; } .logo { display: flex; align-items: center; padding: 0 20px 20px; border-bottom: 1px solid rgba(0,0,0,0.05); margin-bottom: 20px; } .logo i { font-size: 26px; color: var(--primary); margin-right: 12px; } .logo h2 { font-size: 22px; font-weight: 700; background: linear-gradient(90deg, #4361ee, #3f37c9); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } /* Дерево разделов */ .tree-menu { padding: 0 5px; } .tree-section { margin-bottom: 8px; border-radius: 8px; background-color: var(--section-bg); transition: var(--transition); } .tree-section-header { display: flex; align-items: center; padding: 12px 15px; cursor: pointer; border-radius: 8px; position: relative; transition: var(--transition); font-weight: 500; } .tree-section-header:hover { background-color: var(--section-hover); } .tree-section-header.active { background-color: var(--section-active); color: var(--primary); } .tree-section-header i { margin-right: 12px; color: var(--primary); font-size: 16px; width: 20px; text-align: center; } .tree-section-header .arrow { margin-left: auto; transition: transform 0.2s; font-size: 12px; color: var(--gray); } .tree-section-header.collapsed .arrow { transform: rotate(-90deg); } .tree-subitems { padding-left: 20px; overflow: hidden; transition: var(--transition); } .tree-subitems.collapsed { max-height: 0; } .tree-item { padding: 10px 15px; display: flex; align-items: center; cursor: pointer; border-radius: 8px; margin: 3px 0; font-size: 14px; position: relative; background-color: white; transition: var(--transition); } .tree-item:hover { background-color: var(--section-hover); transform: translateX(3px); } .tree-item.active { background-color: var(--section-active); color: var(--primary); font-weight: 500; } .tree-item i { margin-right: 10px; font-size: 13px; width: 18px; text-align: center; color: var(--gray); } .tree-item.active i { color: var(--primary); } .add-section-btn { display: flex; align-items: center; padding: 10px 15px; cursor: pointer; border-radius: 8px; margin: 8px 0; font-size: 14px; color: var(--primary); background-color: white; border: 1px dashed var(--primary); transition: var(--transition); } .add-section-btn:hover { background-color: var(--section-active); transform: translateX(3px); } .add-section-btn i { margin-right: 10px; color: var(--primary); } /* Секции внизу */ .bottom-sections { padding: 15px; border-top: 1px solid rgba(0,0,0,0.05); margin-top: auto; } .section-group { margin-bottom: 15px; } .archive-header, .work-header, .custom-section-header, .business-section-header, .home-section-header { display: flex; align-items: center; padding: 12px 15px; cursor: pointer; border-radius: 8px; margin-bottom: 5px; font-weight: 500; transition: var(--transition); } .archive-header { background-color: #f8f9fa; } .work-header { background-color: #e6f7ec; } .custom-section-header { background-color: #f8ead6; } .business-section-header { background-color: #e6f7ff; } .home-section-header { background-color: #ffe6f1; } .archive-header:hover { background-color: #e9ecef; } .work-header:hover { background-color: #d4edda; } .custom-section-header:hover { background-color: #f3d9b3; } .business-section-header:hover { background-color: #d1ecf1; } .home-section-header:hover { background-color: #f8d6e6; } .archive-header i { margin-right: 12px; color: var(--archive); } .work-header i { margin-right: 12px; color: var(--work); } .custom-section-header i { margin-right: 12px; color: var(--custom); } .business-section-header i { margin-right: 12px; color: var(--business); } .home-section-header i { margin-right: 12px; color: var(--home); } .archive-header span { font-weight: 600; color: var(--archive); } .work-header span { font-weight: 600; color: var(--work); } .custom-section-header span { font-weight: 600; color: var(--custom); } .business-section-header span { font-weight: 600; color: var(--business); } .home-section-header span { font-weight: 600; color: var(--home); } /* Основное содержимое */ .main-content { flex: 1; margin-left: 320px; padding: 30px; transition: var(--transition); } .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .header h1 { font-size: 26px; font-weight: 700; color: var(--dark); } .action-buttons { display: flex; gap: 12px; } .btn { padding: 12px 18px; border-radius: 8px; border: none; cursor: pointer; font-weight: 500; display: flex; align-items: center; gap: 8px; transition: var(--transition); font-size: 14px; } .btn-primary { background-color: var(--primary); color: white; box-shadow: 0 4px 12px rgba(67, 97, 238, 0.2); } .btn-primary:hover { background-color: var(--primary-dark); transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .btn-outline { background: white; border: 1px solid var(--primary); color: var(--primary); } .btn-outline:hover { background-color: #e9ecef; transform: translateY(-2px); } .btn-archive { padding: 3px 6px; font-size: 12px; min-width: auto; color: var(--gray); border: none; border-radius: 4px; cursor: pointer; margin-left: auto; background: none; transition: var(--transition); } .btn-archive:hover { color: var(--primary); transform: scale(1.1); } /* Табы проектов */ .project-tabs { display: flex; gap: 8px; margin-bottom: 25px; overflow-x: auto; padding-bottom: 8px; scrollbar-width: thin; scrollbar-color: var(--primary) #f0f0f0; } .project-tabs::-webkit-scrollbar { height: 6px; } .project-tabs::-webkit-scrollbar-track { background: #f0f0f0; border-radius: 3px; } .project-tabs::-webkit-scrollbar-thumb { background-color: var(--primary); border-radius: 3px; } .project-tab { padding: 10px 18px; border-radius: 20px; background-color: #f0f2f5; cursor: pointer; font-size: 14px; white-space: nowrap; transition: var(--transition); position: relative; display: flex; align-items: center; gap: 8px; font-weight: 500; } .project-tab:hover { background-color: #e9ecef; transform: translateY(-2px); } .project-tab.active { background-color: var(--primary); color: white; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .project-tab .delete-btn { display: none; background: none; border: none; color: inherit; cursor: pointer; padding: 0; margin-left: 5px; transition: var(--transition); } .project-tab:hover .delete-btn { display: block; } .project-tab .delete-btn:hover { transform: scale(1.1); } /* Кнопки экспорта */ .export-btn { background-color: #28a745; color: white; border: none; border-radius: 20px; padding: 10px 18px; cursor: pointer; font-size: 14px; margin-left: auto; display: flex; align-items: center; gap: 8px; transition: var(--transition); font-weight: 500; box-shadow: 0 4px 12px rgba(40, 167, 69, 0.2); } .export-btn:hover { background-color: #218838; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(40, 167, 69, 0.3); } .export-all-btn { background-color: #000; color: white; border: none; border-radius: 20px; padding: 10px 18px; cursor: pointer; font-size: 14px; margin-left: 10px; display: flex; align-items: center; gap: 8px; transition: var(--transition); font-weight: 500; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .export-all-btn:hover { background-color: #111; transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .export-selected-btn { background-color: #d10e1d; color: white; border: none; border-radius: 20px; padding: 10px 18px; cursor: pointer; font-size: 14px; margin-left: 10px; display: flex; align-items: center; gap: 8px; transition: var(--transition); font-weight: 500; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .export-selected-btn:hover { background-color: #e41d2c; transform: translateY(-2px); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } /* Канбан доска */ .kanban-board { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 25px; } .kanban-card { background: white; border-radius: 12px; box-shadow: var(--card-shadow); padding: 25px; transition: var(--transition); position: relative; border: 1px solid rgba(0,0,0,0.05); } .kanban-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0,0,0,0.1); } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid rgba(0,0,0,0.05); } .card-title { font-weight: 600; font-size: 17px; display: flex; align-items: center; gap: 10px; } .card-title i { color:#d10e1d; font-size: 18px; } .card-badge { padding: 5px 12px; border-radius: 20px; font-size: 12px; font-weight: 600; } .card-field { margin-bottom: 15px; position: relative; } .field-label { font-size: 13px; color: var(--gray); margin-bottom: 5px; display: block; font-weight: 500; } .field-value { font-size: 15px; word-break: break-all; padding: 8px 12px; border-radius: 6px; background-color: #f8f9fa; cursor: pointer; transition: var(--transition); position: relative; padding-right: 30px; } .field-value:hover { background-color: #e9ecef; } .field-value.editing { background-color: white; border: 1px solid var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .copy-btn { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); cursor: pointer; color: var(--gray); background: none; border: none; padding: 5px; transition: var(--transition); opacity: 0.7; } .copy-btn:hover { color: var(--primary); opacity: 1; transform: translateY(-50%) scale(1.1); } /* Кнопка удаления в карточках */ .card-delete-btn { position: absolute; top: 20px; right: 20px; background: none; border: none; color: var(--gray); cursor: pointer; opacity: 0; transition: var(--transition); padding: 5px; } .kanban-card:hover .card-delete-btn { opacity: 1; } .card-delete-btn:hover { color: #dc3545; transform: scale(1.1); } /* Контекстное меню */ .context-menu { position: fixed; background: white; border-radius: 8px; box-shadow: 0 5px 25px rgba(0,0,0,0.15); z-index: 1000; min-width: 220px; display: none; border: 1px solid rgba(0,0,0,0.05); overflow: hidden; } .context-menu.active { display: block; animation: fadeIn 0.2s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } } .context-menu-item { padding: 10px 18px; cursor: pointer; font-size: 14px; display: flex; align-items: center; gap: 10px; transition: var(--transition); } .context-menu-item:hover { background-color: var(--section-hover); } .context-menu-item i { width: 18px; text-align: center; color: var(--gray); } .context-menu-divider { height: 1px; background-color: rgba(0,0,0,0.05); margin: 5px 0; } /* Модальные окна */ .modal { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center; backdrop-filter: blur(3px); } .modal.active { display: flex; animation: fadeIn 0.2s ease-out; } .modal-content { background-color: white; border-radius: 12px; width: 100%; max-width: 500px; padding: 30px; box-shadow: 0 10px 30px rgba(0,0,0,0.2); transform: translateY(0); transition: var(--transition); max-height: 90vh; overflow-y: auto; } .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; } .modal-title { font-size: 22px; font-weight: 600; color: var(--dark); } .close-modal { background: none; border: none; font-size: 22px; cursor: pointer; color: var(--gray); transition: var(--transition); padding: 5px; } .close-modal:hover { color: var(--dark); transform: rotate(90deg); } .form-group { margin-bottom: 20px; } .form-label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 500; color: var(--dark); } .form-control { width: 100%; padding: 12px 15px; border: 1px solid #ddd; border-radius: 8px; font-size: 15px; transition: var(--transition); } .form-control:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .modal-footer { display: flex; justify-content: flex-end; gap: 12px; margin-top: 25px; } .field-group { position: relative; margin-bottom: 15px; } .remove-field-btn { position: absolute; right: -40px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--gray); cursor: pointer; font-size: 18px; transition: var(--transition); padding: 5px; } .remove-field-btn:hover { color: #dc3545; transform: translateY(-50%) scale(1.1); } /* Модальное окно экспорта */ .export-modal { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center; backdrop-filter: blur(3px); } .export-modal.active { display: flex; animation: fadeIn 0.2s ease-out; } .export-modal-content { background-color: white; border-radius: 12px; width: 100%; max-width: 500px; padding: 30px; box-shadow: 0 10px 30px rgba(0,0,0,0.2); transform: translateY(0); transition: var(--transition); max-height: 90vh; overflow-y: auto; } .export-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; } .export-modal-title { font-size: 22px; font-weight: 600; color: var(--dark); } .close-export-modal { background: none; border: none; font-size: 22px; cursor: pointer; color: var(--gray); transition: var(--transition); padding: 5px; } .close-export-modal:hover { color: var(--dark); transform: rotate(90deg); } .export-options { display: flex; flex-direction: column; gap: 10px; } .export-section-title { font-weight: 600; margin: 15px 0 5px; color: var(--dark); } .export-option { padding: 12px 15px; border-radius: 8px; background-color: #f8f9fa; cursor: pointer; display: flex; align-items: center; gap: 10px; transition: var(--transition); } .export-option:hover { background-color: #e9ecef; } .export-option i { font-size: 18px; color: var(--primary); } .export-option-text { flex: 1; } /* Уведомления */ .notification { position: fixed; bottom: 25px; right: 25px; background-color: #4bb543; color: white; padding: 15px 25px; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.2); display: flex; align-items: center; gap: 12px; z-index: 1000; transform: translateY(100px); opacity: 0; transition: var(--transition); } .notification.active { transform: translateY(0); opacity: 1; } .notification.error { background-color: #dc3545; } .notification.warning { background-color: #fd7e14; } .notification i { font-size: 18px; } /* Адаптивность */ @media (max-width: 1200px) { .sidebar { width: 280px; } .main-content { margin-left: 280px; } } @media (max-width: 992px) { .sidebar { transform: translateX(-100%); width: 300px; } .sidebar.active { transform: translateX(0); } .main-content { margin-left: 0; padding: 20px; } .kanban-board { grid-template-columns: 1fr; } } @media (max-width: 768px) { .header { flex-direction: column; align-items: flex-start; gap: 15px; } .action-buttons { width: 100%; flex-wrap: wrap; } .btn, .export-btn, .export-all-btn, .export-selected-btn { flex: 1; min-width: 120px; justify-content: center; } } /* Анимации */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .kanban-card { animation: fadeInUp 0.3s ease-out; animation-fill-mode: both; } /* Оптимизация для большого количества записей */ .kanban-board { will-change: transform; } .kanban-card { will-change: transform; contain: content; } /* Virtual scrolling для больших списков */ .virtual-scroll-container { height: calc(100vh - 200px); overflow-y: auto; will-change: transform; } .virtual-scroll-content { position: relative; will-change: transform; } .logo-container { display: flex; align-items: center; padding: 0 20px 20px; border-bottom: 1px solid rgba(0,0,0,0.05); margin-bottom: 20px; } .logo-img { width: 40px; height: 40px; margin-right: 12px; } .license-modal { display: none; position: fixed; z-index: 1001; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); } .license-modal .modal-content { background-color: #fff; margin: 5% auto; padding: 20px; border-radius: 8px; width: 80%; max-width: 700px; max-height: 80vh; overflow-y: auto; } .license-modal .modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .license-modal .modal-body { line-height: 1.6; } .license-modal .modal-footer { text-align: right; margin-top: 20px; } .license-link { padding: 12px 15px; cursor: pointer; display: flex; align-items: center; color: var(--gray); transition: var(--transition); } .license-link:hover { color: var(--primary); } .license-link i { margin-right: 10px; } /* Обновите стили header для правильного позиционирования */ .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; flex-wrap: wrap; gap: 15px; } /* Стиль для скрытых паролей */ .field-value.password-masked { filter: blur(5px); transition: filter 0.3s ease; user-select: none; } .field-value.password-masked::after { content: "••••••"; position: absolute; left: 0; right: 0; text-align: center; background: inherit; } .logo h2 a{font-size: 2rem; text-decoration: none;} #licenseModal.license-modal div.modal-content div.modal-body{font-size:14px;line-height:1.5rem;} #licenseModal.license-modal div.modal-content div.modal-body ul{margin-left:30px;} #licenseModal.license-modal div.modal-content div.modal-body p a{text-decoration:none; color:#000;} #licenseModal.license-modal div.modal-content div.modal-header button{background:none; font-size:30px;border:none;cursor:pointer;} #licenseModal.license-modal div.modal-content div.modal-header button:hover{color:#f00;} #licenseModal.license-modal div.modal-content div.modal-header h3{text-align: center; display: block; width: 100%;}