From 4734f76368d30a4e048618e8c8cb8faec0ee3f02 Mon Sep 17 00:00:00 2001 From: zulifeng Date: Wed, 28 Jan 2026 21:32:02 +0800 Subject: [PATCH] =?UTF-8?q?style:=20=E6=9B=B4=E6=96=B0=E4=BE=A7=E8=BE=B9?= =?UTF-8?q?=E6=A0=8F=E8=83=8C=E6=99=AF=E6=B8=90=E5=8F=98=E5=92=8C=E4=B8=BB?= =?UTF-8?q?=E4=BD=93=E5=AD=97=E4=BD=93=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/css/style.css | 3022 ++++++++++++++++++++-------------------- frontend/js/main.js | 4 +- 2 files changed, 1517 insertions(+), 1509 deletions(-) diff --git a/frontend/css/style.css b/frontend/css/style.css index 4f5399e..6b5fcc0 100644 --- a/frontend/css/style.css +++ b/frontend/css/style.css @@ -1,2691 +1,2699 @@ :root { - --primary-orange: #FF6B35; - --secondary-orange: #F28C28; - --dark-gray: #333; - --medium-gray: #666; - --light-gray: #f5f5f5; - --white: #fff; - --black: #000; - --border-color: #e0e0e0; - --sidebar-width: 250px; - --header-height: 60px; - --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); + --primary-orange: #ff6b35; + --secondary-orange: #f28c28; + --dark-gray: #333; + --medium-gray: #666; + --light-gray: #f5f5f5; + --white: #fff; + --black: #000; + --border-color: #e0e0e0; + --sidebar-width: 250px; + --header-height: 60px; + --shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.05); + --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); + --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); } * { - margin: 0; - padding: 0; - box-sizing: border-box; + margin: 0; + padding: 0; + box-sizing: border-box; } body { - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - background-color: var(--light-gray); - color: var(--dark-gray); - line-height: 1.6; - overflow-x: hidden; + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + background-color: var(--light-gray); + color: var(--dark-gray); + line-height: 1.6; + overflow-x: hidden; } .app-container { - display: flex; - min-height: 100vh; + display: flex; + min-height: 100vh; } /* Sidebar Styles */ .sidebar { - width: var(--sidebar-width); - background: linear-gradient(180deg, #1a1a2e 0%, #16213e 100%); - color: var(--white); - position: fixed; - height: 100vh; - left: 0; - top: 0; - display: flex; - flex-direction: column; - z-index: 1000; - transition: transform 0.3s ease; - box-shadow: var(--shadow-lg); + width: var(--sidebar-width); + background: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%); + color: var(--white); + position: fixed; + height: 100vh; + left: 0; + top: 0; + display: flex; + flex-direction: column; + z-index: 1000; + transition: transform 0.3s ease; + box-shadow: var(--shadow-lg); } .sidebar-header { - padding: 20px; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - display: flex; - justify-content: space-between; - align-items: center; + padding: 20px; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + display: flex; + justify-content: space-between; + align-items: center; } .logo { - display: flex; - align-items: center; - gap: 12px; - font-size: 1.5rem; - font-weight: bold; - color: var(--primary-orange); + display: flex; + align-items: center; + gap: 12px; + font-size: 1.5rem; + font-weight: bold; + color: var(--primary-orange); } .logo i { - font-size: 1.8rem; + font-size: 1.8rem; } .sidebar-toggle { - background: none; - border: none; - color: rgba(255, 255, 255, 0.7); - font-size: 1.2rem; - cursor: pointer; - padding: 8px; - border-radius: 4px; - transition: all 0.3s ease; + background: none; + border: none; + color: rgba(255, 255, 255, 0.7); + font-size: 1.2rem; + cursor: pointer; + padding: 8px; + border-radius: 4px; + transition: all 0.3s ease; } .sidebar-toggle:hover { - background-color: rgba(255, 107, 53, 0.2); - color: var(--white); + background-color: rgba(255, 107, 53, 0.2); + color: var(--white); } /* Collapsed sidebar */ .sidebar.collapsed { - width: 70px; + width: 70px; } .sidebar.collapsed .logo span, .sidebar.collapsed .nav-item span, .sidebar.collapsed .user-info span { - display: none; + display: none; } .sidebar.collapsed .sidebar-toggle i { - transform: rotate(180deg); + transform: rotate(180deg); } .sidebar.collapsed .logo { - justify-content: center; + justify-content: center; } .sidebar.collapsed .nav-item { - justify-content: center; - padding: 15px; + justify-content: center; + padding: 15px; } .sidebar.collapsed .nav-item i { - margin-right: 0; + margin-right: 0; } .sidebar-nav { - flex: 1; - padding: 20px 0; - overflow-y: auto; + flex: 1; + padding: 20px 0; + overflow-y: auto; } /* Navigation Group Styles */ .nav-group { - margin-bottom: 10px; + margin-bottom: 10px; } .nav-group-title { - display: flex; - align-items: center; - padding: 12px 20px; - color: rgba(255, 255, 255, 0.5); - font-size: 0.75rem; - font-weight: 600; - text-transform: uppercase; - letter-spacing: 1px; - gap: 10px; + display: flex; + align-items: center; + padding: 12px 20px; + color: rgba(255, 255, 255, 0.5); + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + gap: 10px; } .nav-group-title i { - font-size: 0.9rem; - color: var(--primary-orange); + font-size: 0.9rem; + color: var(--primary-orange); } .nav-group .nav-item { - padding-left: 35px; + padding-left: 35px; } .sidebar.collapsed .nav-group-title span { - display: none; + display: none; } .sidebar.collapsed .nav-group-title { - justify-content: center; - padding: 12px; + justify-content: center; + padding: 12px; } .sidebar.collapsed .nav-group .nav-item { - padding-left: 15px; + padding-left: 15px; } .nav-item { - display: flex; - align-items: center; - padding: 15px 25px; - color: rgba(255, 255, 255, 0.7); - text-decoration: none; - transition: all 0.3s ease; - border-left: 3px solid transparent; - margin: 5px 0; + display: flex; + align-items: center; + padding: 15px 25px; + color: rgba(255, 255, 255, 0.7); + text-decoration: none; + transition: all 0.3s ease; + border-left: 3px solid transparent; + margin: 5px 0; } .nav-item:hover { - background-color: rgba(255, 107, 53, 0.1); - color: var(--white); - border-left-color: var(--primary-orange); + background-color: rgba(255, 107, 53, 0.1); + color: var(--white); + border-left-color: var(--primary-orange); } .nav-item.active { - background-color: rgba(255, 107, 53, 0.2); - color: var(--white); - border-left-color: var(--primary-orange); + background-color: rgba(255, 107, 53, 0.2); + color: var(--white); + border-left-color: var(--primary-orange); } .nav-item i { - width: 25px; - margin-right: 12px; - font-size: 1.1rem; + width: 25px; + margin-right: 12px; + font-size: 1.1rem; } .sidebar-footer { - padding: 20px; - border-top: 1px solid rgba(255, 255, 255, 0.1); + padding: 20px; + border-top: 1px solid rgba(255, 255, 255, 0.1); } .user-info { - display: flex; - align-items: center; - gap: 10px; - color: rgba(255, 255, 255, 0.8); + display: flex; + align-items: center; + gap: 10px; + color: rgba(255, 255, 255, 0.8); } .user-info i { - font-size: 2rem; - color: var(--primary-orange); + font-size: 2rem; + color: var(--primary-orange); } /* Main Content */ .main-content { - flex: 1; - margin-left: var(--sidebar-width); - display: flex; - flex-direction: column; - transition: margin-left 0.3s ease; + flex: 1; + margin-left: var(--sidebar-width); + display: flex; + flex-direction: column; + transition: margin-left 0.3s ease; } -.sidebar.collapsed~.main-content { - margin-left: 70px; +.sidebar.collapsed ~ .main-content { + margin-left: 70px; } /* Top Header */ .top-header { - background-color: var(--white); - height: var(--header-height); - display: flex; - align-items: center; - justify-content: space-between; - padding: 0 30px; - box-shadow: var(--shadow-sm); - position: sticky; - top: 0; - z-index: 100; + background-color: var(--white); + height: var(--header-height); + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 30px; + box-shadow: var(--shadow-sm); + position: sticky; + top: 0; + z-index: 100; } .header-left { - display: flex; - align-items: center; - gap: 20px; + display: flex; + align-items: center; + gap: 20px; } .menu-toggle { - background: none; - border: none; - font-size: 1.2rem; - cursor: pointer; - color: var(--medium-gray); - display: none; - padding: 5px; + background: none; + border: none; + font-size: 1.2rem; + cursor: pointer; + color: var(--medium-gray); + display: none; + padding: 5px; } .menu-toggle:hover { - color: var(--primary-orange); + color: var(--primary-orange); } .top-header h1 { - font-size: 1.3rem; - color: var(--dark-gray); - font-weight: 600; + font-size: 1.3rem; + color: var(--dark-gray); + font-weight: 600; } .header-right { - display: flex; - align-items: center; - gap: 20px; + display: flex; + align-items: center; + gap: 20px; } .search-box { - display: flex; - align-items: center; - background-color: var(--light-gray); - border-radius: 20px; - padding: 8px 15px; - width: 300px; + display: flex; + align-items: center; + background-color: var(--light-gray); + border-radius: 20px; + padding: 8px 15px; + width: 300px; } .search-box i { - color: var(--medium-gray); - margin-right: 10px; + color: var(--medium-gray); + margin-right: 10px; } .search-box input { - border: none; - background: none; - outline: none; - width: 100%; - font-size: 0.9rem; + border: none; + background: none; + outline: none; + width: 100%; + font-size: 0.9rem; } .icon-btn { - background: none; - border: none; - font-size: 1.1rem; - cursor: pointer; - color: var(--medium-gray); - padding: 8px; - border-radius: 50%; - transition: all 0.3s ease; - position: relative; + background: none; + border: none; + font-size: 1.1rem; + cursor: pointer; + color: var(--medium-gray); + padding: 8px; + border-radius: 50%; + transition: all 0.3s ease; + position: relative; } .icon-btn:hover { - background-color: var(--light-gray); - color: var(--primary-orange); + background-color: var(--light-gray); + color: var(--primary-orange); } .icon-btn::after { - content: ''; - position: absolute; - top: 5px; - right: 5px; - width: 8px; - height: 8px; - background-color: var(--primary-orange); - border-radius: 50%; - display: none; + content: ""; + position: absolute; + top: 5px; + right: 5px; + width: 8px; + height: 8px; + background-color: var(--primary-orange); + border-radius: 50%; + display: none; } .icon-btn.notification::after { - display: block; + display: block; } /* Content Area */ .content-area { - flex: 1; - padding: 30px; - overflow-y: auto; + flex: 1; + padding: 30px; + overflow-y: auto; } .content-section { - display: none; + display: none; } .content-section.active { - display: block; + display: block; } /* Cards */ .card { - background-color: var(--white); - border-radius: 10px; - box-shadow: var(--shadow-sm); - margin-bottom: 25px; - transition: box-shadow 0.3s ease; + background-color: var(--white); + border-radius: 10px; + box-shadow: var(--shadow-sm); + margin-bottom: 25px; + transition: box-shadow 0.3s ease; } .card:hover { - box-shadow: var(--shadow-md); + box-shadow: var(--shadow-md); } .card-header { - padding: 20px; - border-bottom: 1px solid var(--border-color); - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; - gap: 10px; + padding: 20px; + border-bottom: 1px solid var(--border-color); + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 10px; } .card-header h3 { - color: var(--dark-gray); - font-size: 1.1rem; - font-weight: 600; - display: flex; - align-items: center; - gap: 10px; - margin: 0; + color: var(--dark-gray); + font-size: 1.1rem; + font-weight: 600; + display: flex; + align-items: center; + gap: 10px; + margin: 0; } .card-header h3 i { - color: var(--primary-orange); + color: var(--primary-orange); } .chart-field-select { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - background: var(--white); - color: var(--dark-gray); - font-size: 0.85rem; - cursor: pointer; - transition: all 0.2s ease; - min-width: 120px; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + background: var(--white); + color: var(--dark-gray); + font-size: 0.85rem; + cursor: pointer; + transition: all 0.2s ease; + min-width: 120px; } .chart-field-select:hover { - border-color: var(--primary-orange); + border-color: var(--primary-orange); } .chart-field-select:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } .chart-controls { - display: flex; - gap: 10px; - align-items: center; + display: flex; + gap: 10px; + align-items: center; } .chart-title-input { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - background: var(--white); - color: var(--dark-gray); - font-size: 0.85rem; - transition: all 0.2s ease; - min-width: 150px; - max-width: 200px; - display: block; - visibility: visible; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + background: var(--white); + color: var(--dark-gray); + font-size: 0.85rem; + transition: all 0.2s ease; + min-width: 150px; + max-width: 200px; + display: block; + visibility: visible; } .chart-title-input:hover { - border-color: var(--primary-orange); + border-color: var(--primary-orange); } .chart-title-input:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } .card-body { - padding: 20px; + padding: 20px; } .close-form { - background: none; - border: none; - font-size: 1.2rem; - cursor: pointer; - color: var(--medium-gray); - padding: 5px; + background: none; + border: none; + font-size: 1.2rem; + cursor: pointer; + color: var(--medium-gray); + padding: 5px; } .close-form:hover { - color: var(--primary-orange); + color: var(--primary-orange); } /* Action Bar */ .action-bar { - display: flex; - gap: 15px; - margin-bottom: 15px; - align-items: center; - flex-wrap: wrap; + display: flex; + gap: 15px; + margin-bottom: 15px; + align-items: center; + flex-wrap: wrap; } /* Filter Bar */ .filter-bar { - display: flex; - gap: 15px; - margin-bottom: 25px; - align-items: center; - flex-wrap: wrap; - padding: 15px; - background-color: var(--light-gray); - border-radius: 8px; + display: flex; + gap: 15px; + margin-bottom: 25px; + align-items: center; + flex-wrap: wrap; + padding: 15px; + background-color: var(--light-gray); + border-radius: 8px; } .filter-group { - display: flex; - align-items: center; - gap: 10px; + display: flex; + align-items: center; + gap: 10px; } .filter-group label { - font-size: 0.85rem; - color: var(--text-secondary); - font-weight: 500; - white-space: nowrap; + font-size: 0.85rem; + color: var(--text-secondary); + font-weight: 500; + white-space: nowrap; } .filter-select { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - font-size: 0.9rem; - color: var(--text-primary); - background-color: var(--white); - cursor: pointer; - transition: all 0.3s ease; - min-width: 150px; - max-width: 200px; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + font-size: 0.9rem; + color: var(--text-primary); + background-color: var(--white); + cursor: pointer; + transition: all 0.3s ease; + min-width: 150px; + max-width: 200px; } .filter-select:hover { - border-color: var(--primary-orange); + border-color: var(--primary-orange); } .filter-select:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } .filter-input { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - font-size: 0.9rem; - color: var(--dark-gray); - background-color: var(--white); - cursor: pointer; - transition: all 0.3s ease; - min-width: 130px; - max-width: 160px; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + font-size: 0.9rem; + color: var(--dark-gray); + background-color: var(--white); + cursor: pointer; + transition: all 0.3s ease; + min-width: 130px; + max-width: 160px; } .filter-input:hover { - border-color: var(--primary-orange); + border-color: var(--primary-orange); } .filter-input:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } /* Buttons */ .btn-primary { - background-color: var(--primary-orange); - color: var(--white); - border: none; - padding: 10px 20px; - border-radius: 6px; - cursor: pointer; - font-weight: 600; - font-size: 0.9rem; - transition: all 0.3s ease; - display: inline-flex; - align-items: center; - gap: 8px; + background-color: var(--primary-orange); + color: var(--white); + border: none; + padding: 10px 20px; + border-radius: 6px; + cursor: pointer; + font-weight: 600; + font-size: 0.9rem; + transition: all 0.3s ease; + display: inline-flex; + align-items: center; + gap: 8px; } .btn-primary:hover { - background-color: var(--secondary-orange); - transform: translateY(-2px); - box-shadow: var(--shadow-md); + background-color: var(--secondary-orange); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .btn-secondary { - background-color: var(--dark-gray); - color: var(--white); - border: none; - padding: 10px 20px; - border-radius: 6px; - cursor: pointer; - font-weight: 600; - font-size: 0.9rem; - transition: all 0.3s ease; - display: inline-flex; - align-items: center; - gap: 8px; + background-color: var(--dark-gray); + color: var(--white); + border: none; + padding: 10px 20px; + border-radius: 6px; + cursor: pointer; + font-weight: 600; + font-size: 0.9rem; + transition: all 0.3s ease; + display: inline-flex; + align-items: center; + gap: 8px; } .btn-secondary:hover { - background-color: #555; - transform: translateY(-2px); - box-shadow: var(--shadow-md); + background-color: #555; + transform: translateY(-2px); + box-shadow: var(--shadow-md); } /* Forms */ .form-row { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 20px; - margin-bottom: 15px; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 20px; + margin-bottom: 15px; } .form-group { - margin-bottom: 15px; + margin-bottom: 15px; } .form-group label { - display: block; - margin-bottom: 8px; - font-weight: 600; - color: var(--dark-gray); - font-size: 0.9rem; + display: block; + margin-bottom: 8px; + font-weight: 600; + color: var(--dark-gray); + font-size: 0.9rem; } .form-group input, .form-group select, .form-group textarea { - width: 100%; - padding: 10px 15px; - border: 1px solid var(--border-color); - border-radius: 6px; - font-size: 0.9rem; - transition: all 0.3s ease; - font-family: inherit; + width: 100%; + padding: 10px 15px; + border: 1px solid var(--border-color); + border-radius: 6px; + font-size: 0.9rem; + transition: all 0.3s ease; + font-family: inherit; } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } .form-group textarea { - resize: vertical; - min-height: 80px; + resize: vertical; + min-height: 80px; } .form-actions { - display: flex; - gap: 10px; - justify-content: flex-end; - margin-top: 20px; + display: flex; + gap: 10px; + justify-content: flex-end; + margin-top: 20px; } /* Checkbox Group Styles */ .checkbox-group { - display: flex; - flex-wrap: wrap; - gap: 12px; - padding: 10px 0; + display: flex; + flex-wrap: wrap; + gap: 12px; + padding: 10px 0; } .checkbox-label { - display: flex; - align-items: center; - gap: 8px; - cursor: pointer; - padding: 8px 14px; - border: 1px solid var(--border-color); - border-radius: 6px; - transition: all 0.2s ease; - background-color: var(--white); - font-size: 0.9rem; + display: flex; + align-items: center; + gap: 8px; + cursor: pointer; + padding: 8px 14px; + border: 1px solid var(--border-color); + border-radius: 6px; + transition: all 0.2s ease; + background-color: var(--white); + font-size: 0.9rem; } .checkbox-label:hover { - border-color: var(--primary-orange); - background-color: rgba(255, 107, 53, 0.05); + border-color: var(--primary-orange); + background-color: rgba(255, 107, 53, 0.05); } .checkbox-label input[type="checkbox"] { - width: 16px; - height: 16px; - margin: 0; - accent-color: var(--primary-orange); - cursor: pointer; + width: 16px; + height: 16px; + margin: 0; + accent-color: var(--primary-orange); + cursor: pointer; } -.checkbox-label input[type="checkbox"]:checked+span { - color: var(--primary-orange); - font-weight: 500; +.checkbox-label input[type="checkbox"]:checked + span { + color: var(--primary-orange); + font-weight: 500; } .checkbox-label:has(input[type="checkbox"]:checked) { - border-color: var(--primary-orange); - background-color: rgba(255, 107, 53, 0.1); + border-color: var(--primary-orange); + background-color: rgba(255, 107, 53, 0.1); } - /* File Upload */ .file-upload { - position: relative; - display: flex; - align-items: center; - gap: 15px; - padding: 20px; - border: 2px dashed var(--border-color); - border-radius: 8px; - transition: all 0.3s ease; + position: relative; + display: flex; + align-items: center; + gap: 15px; + padding: 20px; + border: 2px dashed var(--border-color); + border-radius: 8px; + transition: all 0.3s ease; } .file-upload:hover { - border-color: var(--primary-orange); - background-color: rgba(255, 107, 53, 0.05); + border-color: var(--primary-orange); + background-color: rgba(255, 107, 53, 0.05); } .file-upload i { - font-size: 2rem; - color: var(--primary-orange); + font-size: 2rem; + color: var(--primary-orange); } .file-upload input { - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - opacity: 0; - cursor: pointer; + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + cursor: pointer; } .file-upload span { - color: var(--medium-gray); - font-size: 0.9rem; + color: var(--medium-gray); + font-size: 0.9rem; } /* Table */ .table-responsive { - overflow-x: auto; + overflow-x: auto; } table { - width: 100%; - border-collapse: collapse; + width: 100%; + border-collapse: collapse; } th { - background-color: var(--light-gray); - color: var(--dark-gray); - font-weight: 600; - padding: 10px 12px; - text-align: left; - border-bottom: 2px solid var(--border-color); - font-size: 0.85rem; - text-transform: uppercase; - letter-spacing: 0.5px; + background-color: var(--light-gray); + color: var(--dark-gray); + font-weight: 600; + padding: 10px 12px; + text-align: left; + border-bottom: 2px solid var(--border-color); + font-size: 0.85rem; + text-transform: uppercase; + letter-spacing: 0.5px; } td { - padding: 8px 12px; - border-bottom: 1px solid var(--border-color); - font-size: 0.9rem; - max-width: 250px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - cursor: pointer; - position: relative; + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); + font-size: 0.9rem; + max-width: 250px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + cursor: pointer; + position: relative; } tr:hover td { - background-color: rgba(255, 107, 53, 0.05); + background-color: rgba(255, 107, 53, 0.05); } /* Tooltip styles */ td.has-overflow { - position: relative; + position: relative; } td.has-overflow:hover::before { - content: none; - position: absolute; - bottom: 100%; - left: 50%; - transform: translateX(-50%) translateY(-8px); - padding: 12px 16px; - background: linear-gradient(135deg, #333 0%, #555 100%); - color: var(--white); - font-size: 0.85rem; - border-radius: 8px; - white-space: pre-wrap; - max-width: 520px; - max-height: 320px; - overflow: auto; - word-wrap: break-word; - z-index: 1000; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1); - margin-bottom: 8px; - text-align: left; - line-height: 1.5; - animation: tooltipFadeIn 0.2s ease-out; + content: none; + position: absolute; + bottom: 100%; + left: 50%; + transform: translateX(-50%) translateY(-8px); + padding: 12px 16px; + background: linear-gradient(135deg, #333 0%, #555 100%); + color: var(--white); + font-size: 0.85rem; + border-radius: 8px; + white-space: pre-wrap; + max-width: 520px; + max-height: 320px; + overflow: auto; + word-wrap: break-word; + z-index: 1000; + box-shadow: + 0 4px 12px rgba(0, 0, 0, 0.3), + 0 0 0 1px rgba(255, 255, 255, 0.1); + margin-bottom: 8px; + text-align: left; + line-height: 1.5; + animation: tooltipFadeIn 0.2s ease-out; } td.has-overflow:hover::after { - content: none; - position: absolute; - bottom: 100%; - left: 50%; - transform: translateX(-50%) translateY(-8px); - border: 8px solid transparent; - border-top-color: #555; - margin-bottom: 0; - z-index: 1000; - filter: drop-shadow(0 -2px 2px rgba(0, 0, 0, 0.2)); + content: none; + position: absolute; + bottom: 100%; + left: 50%; + transform: translateX(-50%) translateY(-8px); + border: 8px solid transparent; + border-top-color: #555; + margin-bottom: 0; + z-index: 1000; + filter: drop-shadow(0 -2px 2px rgba(0, 0, 0, 0.2)); } @keyframes tooltipFadeIn { - from { - opacity: 0; - transform: translateX(-50%) translateY(-4px); - } + from { + opacity: 0; + transform: translateX(-50%) translateY(-4px); + } - to { - opacity: 1; - transform: translateX(-50%) translateY(-8px); - } + to { + opacity: 1; + transform: translateX(-50%) translateY(-8px); + } } /* Overflow cell styles for description and solution columns */ td.overflow-cell { - max-width: 250px; + max-width: 250px; } .cell-tooltip { - position: fixed; - z-index: 3000; - padding: 12px 16px; - background: linear-gradient(135deg, #333 0%, #555 100%); - color: var(--white); - font-size: 0.85rem; - border-radius: 8px; - white-space: pre-wrap; - max-width: 80vw; - max-height: 70vh; - overflow: auto; - overflow-wrap: anywhere; - pointer-events: auto; - box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(255, 255, 255, 0.1); - line-height: 1.5; + position: fixed; + z-index: 3000; + padding: 12px 16px; + background: linear-gradient(135deg, #333 0%, #555 100%); + color: var(--white); + font-size: 0.85rem; + border-radius: 8px; + white-space: pre-wrap; + max-width: 80vw; + max-height: 70vh; + overflow: auto; + overflow-wrap: anywhere; + pointer-events: auto; + box-shadow: + 0 8px 24px rgba(0, 0, 0, 0.35), + 0 0 0 1px rgba(255, 255, 255, 0.1); + line-height: 1.5; } .cell-tooltip::after { - content: ''; - position: absolute; - left: 50%; - transform: translateX(-50%); - border: 8px solid transparent; + content: ""; + position: absolute; + left: 50%; + transform: translateX(-50%); + border: 8px solid transparent; } .cell-tooltip[data-placement="top"]::after { - bottom: -16px; - border-top-color: #555; + bottom: -16px; + border-top-color: #555; } .cell-tooltip[data-placement="bottom"]::after { - top: -16px; - border-bottom-color: #555; + top: -16px; + border-bottom-color: #555; } .table-actions { - display: flex; - gap: 10px; + display: flex; + gap: 10px; } .action-btn { - padding: 6px 12px; - margin: 0 5px; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 0.8rem; - font-weight: 600; - transition: all 0.3s ease; + padding: 6px 12px; + margin: 0 5px; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 0.8rem; + font-weight: 600; + transition: all 0.3s ease; } .edit-btn { - background-color: var(--primary-orange); - color: var(--white); + background-color: var(--primary-orange); + color: var(--white); } .edit-btn:hover { - background-color: var(--secondary-orange); - transform: translateY(-1px); + background-color: var(--secondary-orange); + transform: translateY(-1px); } .delete-btn { - background-color: #e74c3c; - color: var(--white); + background-color: #e74c3c; + color: var(--white); } .delete-btn:hover:not(.disabled) { - background-color: #c0392b; - transform: translateY(-1px); + background-color: #c0392b; + transform: translateY(-1px); } /* Disabled delete button style */ .delete-btn.disabled, .delete-followup-btn.disabled { - background-color: #bdc3c7; - color: #7f8c8d; - cursor: not-allowed; - opacity: 0.6; + background-color: #bdc3c7; + color: #7f8c8d; + cursor: not-allowed; + opacity: 0.6; } .delete-btn.disabled:hover, .delete-followup-btn.disabled:hover { - background-color: #bdc3c7; - transform: none; + background-color: #bdc3c7; + transform: none; } /* Dashboard Stats */ .dashboard-stats { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); - gap: 20px; - margin-bottom: 30px; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 20px; + margin-bottom: 30px; } .stat-card { - background-color: var(--white); - border-radius: 10px; - padding: 25px; - box-shadow: var(--shadow-sm); - display: flex; - align-items: center; - gap: 20px; - transition: all 0.3s ease; + background-color: var(--white); + border-radius: 10px; + padding: 25px; + box-shadow: var(--shadow-sm); + display: flex; + align-items: center; + gap: 20px; + transition: all 0.3s ease; } .stat-card:hover { - box-shadow: var(--shadow-md); - transform: translateY(-5px); + box-shadow: var(--shadow-md); + transform: translateY(-5px); } .stat-icon { - width: 60px; - height: 60px; - background-color: rgba(255, 107, 53, 0.1); - border-radius: 12px; - display: flex; - align-items: center; - justify-content: center; + width: 60px; + height: 60px; + background-color: rgba(255, 107, 53, 0.1); + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; } .stat-icon i { - font-size: 1.8rem; - color: var(--primary-orange); + font-size: 1.8rem; + color: var(--primary-orange); } .stat-info h3 { - font-size: 2rem; - font-weight: 700; - color: var(--dark-gray); - margin-bottom: 5px; + font-size: 2rem; + font-weight: 700; + color: var(--dark-gray); + margin-bottom: 5px; } .stat-info p { - color: var(--medium-gray); - font-size: 0.9rem; - font-weight: 500; + color: var(--medium-gray); + font-size: 0.9rem; + font-weight: 500; } /* Highlighted stat card for follow-up count */ .stat-card-highlight { - background: linear-gradient(135deg, #FF6B35 0%, #F28C28 100%); - border: 2px solid #FF6B35; - box-shadow: 0 8px 20px rgba(255, 107, 53, 0.3); + background: linear-gradient(135deg, #ff6b35 0%, #f28c28 100%); + border: 2px solid #ff6b35; + box-shadow: 0 8px 20px rgba(255, 107, 53, 0.3); } .stat-card-highlight:hover { - box-shadow: 0 12px 28px rgba(255, 107, 53, 0.4); - transform: translateY(-8px); + box-shadow: 0 12px 28px rgba(255, 107, 53, 0.4); + transform: translateY(-8px); } .stat-card-highlight .stat-icon { - background-color: rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.2); } .stat-card-highlight .stat-icon i { - color: var(--white); + color: var(--white); } .stat-card-highlight .stat-info h3 { - color: var(--white); - font-size: 2.5rem; + color: var(--white); + font-size: 2.5rem; } .stat-card-highlight .stat-info p { - color: rgba(255, 255, 255, 0.95); - font-weight: 600; - font-size: 1rem; + color: rgba(255, 255, 255, 0.95); + font-weight: 600; + font-size: 1rem; } /* Dashboard Filters */ .dashboard-filters { - background-color: var(--white); - padding: 20px; - border-radius: 10px; - box-shadow: var(--shadow-sm); - margin-bottom: 25px; + background-color: var(--white); + padding: 20px; + border-radius: 10px; + box-shadow: var(--shadow-sm); + margin-bottom: 25px; } .filter-group { - display: flex; - align-items: center; - gap: 15px; - flex-wrap: wrap; + display: flex; + align-items: center; + gap: 15px; + flex-wrap: wrap; } .filter-group label { - font-weight: 600; - color: var(--dark-gray); + font-weight: 600; + color: var(--dark-gray); } .filter-group input[type="date"] { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - font-size: 0.9rem; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + font-size: 0.9rem; } .filter-group span { - color: var(--medium-gray); + color: var(--medium-gray); } /* Dashboard Grid */ .dashboard-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(450px, 1fr)); - gap: 25px; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(450px, 1fr)); + gap: 25px; } .chart-card { - min-height: 400px; + min-height: 400px; } .chart-card canvas { - max-height: 300px; + max-height: 300px; } /* Modal */ .modal { - display: none; - position: fixed; - z-index: 2000; - left: 0; - top: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - animation: fadeIn 0.3s ease; + display: none; + position: fixed; + z-index: 2000; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + animation: fadeIn 0.3s ease; } @keyframes fadeIn { - from { - opacity: 0; - } + from { + opacity: 0; + } - to { - opacity: 1; - } + to { + opacity: 1; + } } .modal-content { - background-color: var(--white); - margin: 5% auto; - border-radius: 12px; - width: 90%; - max-width: 700px; - box-shadow: var(--shadow-lg); - animation: slideIn 0.3s ease; + background-color: var(--white); + margin: 5% auto; + border-radius: 12px; + width: 90%; + max-width: 700px; + box-shadow: var(--shadow-lg); + animation: slideIn 0.3s ease; } @keyframes slideIn { - from { - transform: translateY(-50px); - opacity: 0; - } + from { + transform: translateY(-50px); + opacity: 0; + } - to { - transform: translateY(0); - opacity: 1; - } + to { + transform: translateY(0); + opacity: 1; + } } .modal-header { - padding: 20px 25px; - border-bottom: 1px solid var(--border-color); - display: flex; - justify-content: space-between; - align-items: center; + padding: 20px 25px; + border-bottom: 1px solid var(--border-color); + display: flex; + justify-content: space-between; + align-items: center; } .modal-header h3 { - color: var(--dark-gray); - font-size: 1.2rem; - font-weight: 600; - display: flex; - align-items: center; - gap: 10px; + color: var(--dark-gray); + font-size: 1.2rem; + font-weight: 600; + display: flex; + align-items: center; + gap: 10px; } .modal-header h3 i { - color: var(--primary-orange); + color: var(--primary-orange); } .modal-header .close { - font-size: 1.5rem; - cursor: pointer; - color: var(--medium-gray); - transition: color 0.3s ease; + font-size: 1.5rem; + cursor: pointer; + color: var(--medium-gray); + transition: color 0.3s ease; } .modal-header .close:hover { - color: var(--primary-orange); + color: var(--primary-orange); } .modal-body { - padding: 25px; + padding: 25px; } #editModal .modal-content { - width: min(calc(100vw - var(--sidebar-width) - 80px), 800px); - max-width: 800px; - max-height: 92vh; - margin: 3vh auto; - display: flex; - flex-direction: column; + width: min(calc(100vw - var(--sidebar-width) - 80px), 800px); + max-width: 800px; + max-height: 92vh; + margin: 3vh auto; + display: flex; + flex-direction: column; } -.sidebar.collapsed~.main-content #editModal .modal-content { - width: min(calc(100vw - 70px - 80px), 800px); +.sidebar.collapsed ~ .main-content #editModal .modal-content { + width: min(calc(100vw - 70px - 80px), 800px); } #editModal .modal-body { - flex: 1; - overflow: auto; + flex: 1; + overflow: auto; } #editModal .form-row { - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } #createModal .modal-content { - width: min(calc(100vw - var(--sidebar-width) - 80px), 800px); - max-width: 800px; - max-height: 92vh; - margin: 3vh auto; - display: flex; - flex-direction: column; + width: min(calc(100vw - var(--sidebar-width) - 80px), 800px); + max-width: 800px; + max-height: 92vh; + margin: 3vh auto; + display: flex; + flex-direction: column; } -.sidebar.collapsed~.main-content #createModal .modal-content { - width: min(calc(100vw - 70px - 80px), 800px); +.sidebar.collapsed ~ .main-content #createModal .modal-content { + width: min(calc(100vw - 70px - 80px), 800px); } #createModal .modal-body { - flex: 1; - overflow: auto; + flex: 1; + overflow: auto; } #createModal .form-row { - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); } /* Trial Periods Section */ .trial-periods-section { - margin-bottom: 25px; - padding: 20px; - background-color: var(--light-gray); - border-radius: 8px; + margin-bottom: 25px; + padding: 20px; + background-color: var(--light-gray); + border-radius: 8px; } .section-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 15px; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15px; } .section-header h4 { - color: var(--dark-gray); - font-size: 1.1rem; - font-weight: 600; - display: flex; - align-items: center; - gap: 8px; - margin: 0; + color: var(--dark-gray); + font-size: 1.1rem; + font-weight: 600; + display: flex; + align-items: center; + gap: 8px; + margin: 0; } .section-header h4 i { - color: var(--primary-orange); + color: var(--primary-orange); } .btn-sm { - padding: 6px 12px; - font-size: 0.85rem; + padding: 6px 12px; + font-size: 0.85rem; } .trial-periods-list { - background-color: var(--white); - border-radius: 6px; - overflow: hidden; + background-color: var(--white); + border-radius: 6px; + overflow: hidden; } .trial-periods-table { - width: 100%; - border-collapse: collapse; + width: 100%; + border-collapse: collapse; } .trial-periods-table thead { - background-color: var(--light-gray); + background-color: var(--light-gray); } .trial-periods-table th { - padding: 12px; - text-align: left; - font-weight: 600; - color: var(--dark-gray); - font-size: 0.9rem; - border-bottom: 2px solid var(--border-color); + padding: 12px; + text-align: left; + font-weight: 600; + color: var(--dark-gray); + font-size: 0.9rem; + border-bottom: 2px solid var(--border-color); } .trial-periods-table td { - padding: 12px; - border-bottom: 1px solid var(--border-color); - font-size: 0.9rem; + padding: 12px; + border-bottom: 1px solid var(--border-color); + font-size: 0.9rem; } .trial-periods-table tbody tr:hover { - background-color: var(--light-gray); + background-color: var(--light-gray); } .trial-action-btns { - display: flex; - gap: 8px; + display: flex; + gap: 8px; } .trial-action-btns .action-btn { - padding: 4px 8px; - font-size: 0.85rem; + padding: 4px 8px; + font-size: 0.85rem; } .no-data-message { - padding: 30px; - text-align: center; - color: var(--medium-gray); - font-size: 0.95rem; + padding: 30px; + text-align: center; + color: var(--medium-gray); + font-size: 0.95rem; } .divider { - height: 1px; - background-color: var(--border-color); - margin: 25px 0; + height: 1px; + background-color: var(--border-color); + margin: 25px 0; } /* Trial Period Modals */ #addTrialPeriodModal .modal-content, #editTrialPeriodModal .modal-content { - max-width: 500px; + max-width: 500px; } /* Responsive Design */ @media (max-width: 1024px) { - .dashboard-grid { - grid-template-columns: 1fr; - } + .dashboard-grid { + grid-template-columns: 1fr; + } } @media (max-width: 768px) { - .sidebar { - transform: translateX(-100%); - } + .sidebar { + transform: translateX(-100%); + } - .sidebar.open { - transform: translateX(0); - } + .sidebar.open { + transform: translateX(0); + } - .main-content { - margin-left: 0; - } + .main-content { + margin-left: 0; + } - .menu-toggle { - display: block; - } + .menu-toggle { + display: block; + } - .top-header { - padding: 0 15px; - } + .top-header { + padding: 0 15px; + } - .search-box { - width: 200px; - } + .search-box { + width: 200px; + } - .content-area { - padding: 15px; - } + .content-area { + padding: 15px; + } - .dashboard-stats { - grid-template-columns: 1fr; - } + .dashboard-stats { + grid-template-columns: 1fr; + } - .form-row { - grid-template-columns: 1fr; - } + .form-row { + grid-template-columns: 1fr; + } - .action-bar { - flex-direction: column; - align-items: stretch; - } + .action-bar { + flex-direction: column; + align-items: stretch; + } - .action-bar button { - width: 100%; - justify-content: center; - } + .action-bar button { + width: 100%; + justify-content: center; + } - .filter-group { - width: 100%; - justify-content: space-between; - } + .filter-group { + width: 100%; + justify-content: space-between; + } - .filter-select, - .filter-input { - flex: 1; - min-width: 0; - max-width: none; - } + .filter-select, + .filter-input { + flex: 1; + min-width: 0; + max-width: none; + } - table { - font-size: 0.8rem; - } + table { + font-size: 0.8rem; + } - th, - td { - padding: 10px; - } + th, + td { + padding: 10px; + } - .modal-content { - width: 95%; - margin: 10% auto; - } + .modal-content { + width: 95%; + margin: 10% auto; + } - #editModal .modal-content { - width: calc(100% - 24px); - margin: 4vh auto; - max-height: 92vh; - } + #editModal .modal-content { + width: calc(100% - 24px); + margin: 4vh auto; + max-height: 92vh; + } - #editModal .modal-body { - padding: 18px; - } + #editModal .modal-body { + padding: 18px; + } - #createModal .modal-content { - width: calc(100% - 24px); - margin: 4vh auto; - max-height: 92vh; - } + #createModal .modal-content { + width: calc(100% - 24px); + margin: 4vh auto; + max-height: 92vh; + } - #createModal .modal-body { - padding: 18px; - } + #createModal .modal-body { + padding: 18px; + } } @media (max-width: 480px) { - .search-box { - display: none; - } + .search-box { + display: none; + } - .header-right .icon-btn { - padding: 5px; - } + .header-right .icon-btn { + padding: 5px; + } - .stat-card { - padding: 20px; - } + .stat-card { + padding: 20px; + } - .stat-icon { - width: 50px; - height: 50px; - } + .stat-icon { + width: 50px; + height: 50px; + } - .stat-icon i { - font-size: 1.5rem; - } + .stat-icon i { + font-size: 1.5rem; + } - .stat-info h3 { - font-size: 1.5rem; - } + .stat-info h3 { + font-size: 1.5rem; + } } /* Pagination Styles */ .pagination { - display: flex; - align-items: center; - justify-content: space-between; - padding: 20px; - background: var(--white); - border-top: 1px solid var(--border-color); - flex-wrap: wrap; - gap: 15px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 20px; + background: var(--white); + border-top: 1px solid var(--border-color); + flex-wrap: wrap; + gap: 15px; } .pagination-info { - color: var(--medium-gray); - font-size: 0.9rem; + color: var(--medium-gray); + font-size: 0.9rem; } .pagination-controls { - display: flex; - align-items: center; - gap: 8px; + display: flex; + align-items: center; + gap: 8px; } .pagination-btn { - min-width: 36px; - height: 36px; - padding: 0 12px; - border: 1px solid var(--border-color); - background: var(--white); - color: var(--dark-gray); - border-radius: 6px; - cursor: pointer; - transition: all 0.2s ease; - display: flex; - align-items: center; - justify-content: center; - font-size: 0.9rem; + min-width: 36px; + height: 36px; + padding: 0 12px; + border: 1px solid var(--border-color); + background: var(--white); + color: var(--dark-gray); + border-radius: 6px; + cursor: pointer; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; } .pagination-btn:hover:not(:disabled) { - background: var(--primary-orange); - color: var(--white); - border-color: var(--primary-orange); - transform: translateY(-1px); + background: var(--primary-orange); + color: var(--white); + border-color: var(--primary-orange); + transform: translateY(-1px); } .pagination-btn:disabled { - opacity: 0.4; - cursor: not-allowed; - background: var(--light-gray); + opacity: 0.4; + cursor: not-allowed; + background: var(--light-gray); } .page-numbers { - display: flex; - align-items: center; - gap: 5px; + display: flex; + align-items: center; + gap: 5px; } .page-number { - min-width: 36px; - height: 36px; - padding: 0 12px; - border: 1px solid var(--border-color); - background: var(--white); - color: var(--dark-gray); - border-radius: 6px; - cursor: pointer; - transition: all 0.2s ease; - display: flex; - align-items: center; - justify-content: center; - font-size: 0.9rem; - font-weight: 500; + min-width: 36px; + height: 36px; + padding: 0 12px; + border: 1px solid var(--border-color); + background: var(--white); + color: var(--dark-gray); + border-radius: 6px; + cursor: pointer; + transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: center; + font-size: 0.9rem; + font-weight: 500; } .page-number:hover { - background: var(--secondary-orange); - color: var(--white); - border-color: var(--secondary-orange); - transform: translateY(-1px); + background: var(--secondary-orange); + color: var(--white); + border-color: var(--secondary-orange); + transform: translateY(-1px); } .page-number.active { - background: var(--primary-orange); - color: var(--white); - border-color: var(--primary-orange); - font-weight: 600; + background: var(--primary-orange); + color: var(--white); + border-color: var(--primary-orange); + font-weight: 600; } .pagination-size { - display: flex; - align-items: center; - gap: 10px; + display: flex; + align-items: center; + gap: 10px; } .pagination-size label { - color: var(--medium-gray); - font-size: 0.9rem; + color: var(--medium-gray); + font-size: 0.9rem; } .pagination-size select { - padding: 8px 12px; - border: 1px solid var(--border-color); - border-radius: 6px; - background: var(--white); - color: var(--dark-gray); - font-size: 0.9rem; - cursor: pointer; - transition: all 0.2s ease; + padding: 8px 12px; + border: 1px solid var(--border-color); + border-radius: 6px; + background: var(--white); + color: var(--dark-gray); + font-size: 0.9rem; + cursor: pointer; + transition: all 0.2s ease; } .pagination-size select:hover { - border-color: var(--primary-orange); + border-color: var(--primary-orange); } .pagination-size select:focus { - outline: none; - border-color: var(--primary-orange); - box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); + outline: none; + border-color: var(--primary-orange); + box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.1); } @media (max-width: 768px) { - .pagination { - flex-direction: column; - align-items: stretch; - } + .pagination { + flex-direction: column; + align-items: stretch; + } - .pagination-controls { - justify-content: center; - flex-wrap: wrap; - } + .pagination-controls { + justify-content: center; + flex-wrap: wrap; + } - .pagination-size { - justify-content: center; - } + .pagination-size { + justify-content: center; + } - .pagination-info { - text-align: center; - } + .pagination-info { + text-align: center; + } } /* Status Badge Styles */ .status-badge { - display: inline-flex; - align-items: center; - gap: 6px; - padding: 5px 12px; - border-radius: 20px; - font-size: 0.8rem; - font-weight: 600; - white-space: nowrap; + display: inline-flex; + align-items: center; + gap: 6px; + padding: 5px 12px; + border-radius: 20px; + font-size: 0.8rem; + font-weight: 600; + white-space: nowrap; } .status-badge i { - font-size: 0.75rem; + font-size: 0.75rem; } .status-active { - background-color: #d4edda; - color: #155724; - border: 1px solid #c3e6cb; + background-color: #d4edda; + color: #155724; + border: 1px solid #c3e6cb; } .status-inactive { - background-color: #e2e3e5; - color: #383d41; - border: 1px solid #d6d8db; + background-color: #e2e3e5; + color: #383d41; + border: 1px solid #d6d8db; } .status-expired { - background-color: #f8d7da; - color: #721c24; - border: 1px solid #f5c6cb; + background-color: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; } .status-urgent { - background-color: #f8d7da; - color: #721c24; - border: 1px solid #f5c6cb; - animation: pulse 1.5s infinite; + background-color: #f8d7da; + color: #721c24; + border: 1px solid #f5c6cb; + animation: pulse 1.5s infinite; } .status-warning { - background-color: #fff3cd; - color: #856404; - border: 1px solid #ffeeba; + background-color: #fff3cd; + color: #856404; + border: 1px solid #ffeeba; } .status-notice { - background-color: #cce5ff; - color: #004085; - border: 1px solid #b8daff; + background-color: #cce5ff; + color: #004085; + border: 1px solid #b8daff; } @keyframes pulse { + 0%, + 100% { + opacity: 1; + } - 0%, - 100% { - opacity: 1; - } - - 50% { - opacity: 0.7; - } + 50% { + opacity: 0.7; + } } /* Progress Status Badges */ .progress-badge { - display: inline-flex; - align-items: center; - gap: 6px; - padding: 4px 10px; - border-radius: 15px; - font-size: 0.75rem; - font-weight: 600; + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 10px; + border-radius: 15px; + font-size: 0.75rem; + font-weight: 600; } .progress-completed { - background-color: #d4edda; - color: #155724; + background-color: #d4edda; + color: #155724; } .progress-in-progress { - background-color: #cce5ff; - color: #004085; + background-color: #cce5ff; + color: #004085; } .progress-pending { - background-color: #fff3cd; - color: #856404; + background-color: #fff3cd; + color: #856404; } .progress-rejected { - background-color: #f8d7da; - color: #721c24; + background-color: #f8d7da; + color: #721c24; } .progress-launched { - background-color: #d1ecf1; - color: #0c5460; + background-color: #d1ecf1; + color: #0c5460; } /* Quick Action Cards for Dashboard */ .quick-actions { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 20px; - margin-bottom: 25px; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; + margin-bottom: 25px; } @media (max-width: 1200px) { - .quick-actions { - grid-template-columns: repeat(2, 1fr); - } + .quick-actions { + grid-template-columns: repeat(2, 1fr); + } } @media (max-width: 768px) { - .quick-actions { - grid-template-columns: 1fr; - } + .quick-actions { + grid-template-columns: 1fr; + } } .quick-action-card { - background: linear-gradient(135deg, var(--white) 0%, #f8f9fa 100%); - border-radius: 12px; - padding: 20px; - display: flex; - align-items: center; - gap: 15px; - box-shadow: var(--shadow-sm); - cursor: pointer; - transition: all 0.3s ease; - border-left: 4px solid transparent; + background: linear-gradient(135deg, var(--white) 0%, #f8f9fa 100%); + border-radius: 12px; + padding: 20px; + display: flex; + align-items: center; + gap: 15px; + box-shadow: var(--shadow-sm); + cursor: pointer; + transition: all 0.3s ease; + border-left: 4px solid transparent; } .quick-action-card:hover { - transform: translateY(-3px); - box-shadow: var(--shadow-md); + transform: translateY(-3px); + box-shadow: var(--shadow-md); } .quick-action-card.alert { - border-left-color: #dc3545; + border-left-color: #dc3545; } .quick-action-card.warning { - border-left-color: #ffc107; + border-left-color: #ffc107; } .quick-action-card.info { - border-left-color: #17a2b8; + border-left-color: #17a2b8; } .quick-action-card.success { - border-left-color: #28a745; + border-left-color: #28a745; } .quick-action-icon { - width: 50px; - height: 50px; - border-radius: 12px; - display: flex; - align-items: center; - justify-content: center; - font-size: 1.3rem; + width: 50px; + height: 50px; + border-radius: 12px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.3rem; } .quick-action-card.alert .quick-action-icon { - background-color: rgba(220, 53, 69, 0.1); - color: #dc3545; + background-color: rgba(220, 53, 69, 0.1); + color: #dc3545; } .quick-action-card.warning .quick-action-icon { - background-color: rgba(255, 193, 7, 0.1); - color: #ffc107; + background-color: rgba(255, 193, 7, 0.1); + color: #ffc107; } .quick-action-card.info .quick-action-icon { - background-color: rgba(23, 162, 184, 0.1); - color: #17a2b8; + background-color: rgba(23, 162, 184, 0.1); + color: #17a2b8; } .quick-action-card.success .quick-action-icon { - background-color: rgba(40, 167, 69, 0.1); - color: #28a745; + background-color: rgba(40, 167, 69, 0.1); + color: #28a745; } .quick-action-content h4 { - margin: 0 0 5px 0; - font-size: 0.9rem; - color: var(--dark-gray); + margin: 0 0 5px 0; + font-size: 0.9rem; + color: var(--dark-gray); } .quick-action-content .count { - font-size: 1.8rem; - font-weight: 700; - color: var(--dark-gray); + font-size: 1.8rem; + font-weight: 700; + color: var(--dark-gray); } .quick-action-content .label { - font-size: 0.8rem; - color: var(--medium-gray); + font-size: 0.8rem; + color: var(--medium-gray); } /* Empty State Styles */ .empty-state { - text-align: center; - padding: 60px 20px; - color: var(--medium-gray); + text-align: center; + padding: 60px 20px; + color: var(--medium-gray); } .empty-state i { - font-size: 4rem; - color: var(--border-color); - margin-bottom: 20px; + font-size: 4rem; + color: var(--border-color); + margin-bottom: 20px; } .empty-state h3 { - font-size: 1.2rem; - color: var(--dark-gray); - margin-bottom: 10px; + font-size: 1.2rem; + color: var(--dark-gray); + margin-bottom: 10px; } .empty-state p { - font-size: 0.9rem; - margin-bottom: 20px; + font-size: 0.9rem; + margin-bottom: 20px; } /* Trial Expiry Panel */ .expiry-panel { - background-color: var(--white); - border-radius: 10px; - padding: 20px; - box-shadow: var(--shadow-sm); - margin-bottom: 20px; + background-color: var(--white); + border-radius: 10px; + padding: 20px; + box-shadow: var(--shadow-sm); + margin-bottom: 20px; } .expiry-panel-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 15px; - padding-bottom: 10px; - border-bottom: 1px solid var(--border-color); + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 15px; + padding-bottom: 10px; + border-bottom: 1px solid var(--border-color); } .expiry-panel-header h3 { - display: flex; - align-items: center; - gap: 10px; - font-size: 1rem; - color: var(--dark-gray); - margin: 0; + display: flex; + align-items: center; + gap: 10px; + font-size: 1rem; + color: var(--dark-gray); + margin: 0; } .expiry-panel-header h3 i { - color: var(--primary-orange); + color: var(--primary-orange); } .expiry-list { - max-height: 200px; - overflow-y: auto; + max-height: 200px; + overflow-y: auto; } .expiry-item { - display: flex; - align-items: center; - justify-content: space-between; - padding: 10px; - border-radius: 8px; - margin-bottom: 8px; - background-color: var(--light-gray); - transition: all 0.2s ease; + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px; + border-radius: 8px; + margin-bottom: 8px; + background-color: var(--light-gray); + transition: all 0.2s ease; } .expiry-item:hover { - background-color: rgba(255, 107, 53, 0.1); + background-color: rgba(255, 107, 53, 0.1); } .expiry-item-info { - display: flex; - align-items: center; - gap: 10px; + display: flex; + align-items: center; + gap: 10px; } .expiry-item-name { - font-weight: 600; - color: var(--dark-gray); + font-weight: 600; + color: var(--dark-gray); } .expiry-countdown { - font-size: 0.8rem; - padding: 3px 8px; - border-radius: 10px; + font-size: 0.8rem; + padding: 3px 8px; + border-radius: 10px; } .expiry-countdown.urgent { - background-color: #f8d7da; - color: #721c24; + background-color: #f8d7da; + color: #721c24; } .expiry-countdown.warning { - background-color: #fff3cd; - color: #856404; + background-color: #fff3cd; + color: #856404; } .expiry-countdown.normal { - background-color: #cce5ff; - color: #004085; + background-color: #cce5ff; + color: #004085; } /* Smart Reminder Banner */ .smart-reminder { - display: flex; - gap: 15px; - flex-wrap: wrap; - margin-bottom: 20px; + display: flex; + gap: 15px; + flex-wrap: wrap; + margin-bottom: 20px; } .reminder-item { - display: flex; - align-items: center; - gap: 10px; - padding: 12px 18px; - border-radius: 8px; - font-size: 0.9rem; - font-weight: 500; - cursor: pointer; - transition: all 0.2s ease; + display: flex; + align-items: center; + gap: 10px; + padding: 12px 18px; + border-radius: 8px; + font-size: 0.9rem; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; } .reminder-item:hover { - transform: translateY(-2px); + transform: translateY(-2px); } .reminder-item.urgent { - background-color: #f8d7da; - color: #721c24; + background-color: #f8d7da; + color: #721c24; } .reminder-item.warning { - background-color: #fff3cd; - color: #856404; + background-color: #fff3cd; + color: #856404; } .reminder-item i { - font-size: 1rem; + font-size: 1rem; } /* Stat Card Trend Indicator */ .stat-trend { - font-size: 0.8rem; - display: flex; - align-items: center; - gap: 4px; - margin-top: 5px; + font-size: 0.8rem; + display: flex; + align-items: center; + gap: 4px; + margin-top: 5px; } .stat-trend.up { - color: #28a745; + color: #28a745; } .stat-trend.down { - color: #dc3545; + color: #dc3545; } .stat-trend.neutral { - color: var(--medium-gray); + color: var(--medium-gray); } /* Table Row Enhancements */ .trial-row { - transition: all 0.2s ease; + transition: all 0.2s ease; } .trial-row:hover { - background-color: rgba(255, 107, 53, 0.08) !important; + background-color: rgba(255, 107, 53, 0.08) !important; } .action-cell { - white-space: nowrap; - position: sticky; - right: 0; - background-color: var(--white); - box-shadow: -2px 0 5px rgba(0, 0, 0, 0.05); + white-space: nowrap; + position: sticky; + right: 0; + background-color: var(--white); + box-shadow: -2px 0 5px rgba(0, 0, 0, 0.05); } tr:hover .action-cell { - background-color: rgba(255, 107, 53, 0.08); + background-color: rgba(255, 107, 53, 0.08); } /* Global Search Styles */ .global-search-container { - position: relative; + position: relative; } .search-box { - display: flex; - align-items: center; - background-color: var(--light-gray); - border-radius: 25px; - padding: 8px 15px; - width: 320px; - border: 2px solid transparent; - transition: all 0.3s ease; + display: flex; + align-items: center; + background-color: var(--light-gray); + border-radius: 25px; + padding: 8px 15px; + width: 320px; + border: 2px solid transparent; + transition: all 0.3s ease; } .search-box:focus-within { - border-color: var(--primary-orange); - background-color: var(--white); - box-shadow: 0 4px 15px rgba(255, 107, 53, 0.15); + border-color: var(--primary-orange); + background-color: var(--white); + box-shadow: 0 4px 15px rgba(255, 107, 53, 0.15); } .search-shortcut { - background-color: rgba(0, 0, 0, 0.08); - padding: 2px 6px; - border-radius: 4px; - font-size: 0.7rem; - color: var(--medium-gray); - font-family: system-ui; - margin-left: auto; + background-color: rgba(0, 0, 0, 0.08); + padding: 2px 6px; + border-radius: 4px; + font-size: 0.7rem; + color: var(--medium-gray); + font-family: system-ui; + margin-left: auto; } .search-results-dropdown { - position: absolute; - top: 100%; - left: 0; - right: 0; - background-color: var(--white); - border-radius: 12px; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); - margin-top: 8px; - max-height: 400px; - overflow-y: auto; - z-index: 2000; + position: absolute; + top: 100%; + left: 0; + right: 0; + background-color: var(--white); + border-radius: 12px; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); + margin-top: 8px; + max-height: 400px; + overflow-y: auto; + z-index: 2000; } .search-section-title { - padding: 12px 15px 8px; - font-size: 0.75rem; - font-weight: 600; - color: var(--medium-gray); - text-transform: uppercase; - letter-spacing: 0.5px; - display: flex; - align-items: center; - gap: 8px; + padding: 12px 15px 8px; + font-size: 0.75rem; + font-weight: 600; + color: var(--medium-gray); + text-transform: uppercase; + letter-spacing: 0.5px; + display: flex; + align-items: center; + gap: 8px; } .search-section-title i { - font-size: 0.8rem; + font-size: 0.8rem; } .search-result-item, .search-history-item { - padding: 12px 15px; - cursor: pointer; - display: flex; - align-items: center; - gap: 12px; - transition: all 0.2s ease; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); + padding: 12px 15px; + cursor: pointer; + display: flex; + align-items: center; + gap: 12px; + transition: all 0.2s ease; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); } .search-result-item:hover, .search-history-item:hover { - background-color: rgba(255, 107, 53, 0.08); + background-color: rgba(255, 107, 53, 0.08); } .search-result-item i { - color: var(--primary-orange); - font-size: 1rem; + color: var(--primary-orange); + font-size: 1rem; } .search-result-info { - flex: 1; + flex: 1; } .search-result-title { - font-weight: 600; - color: var(--dark-gray); - font-size: 0.9rem; + font-weight: 600; + color: var(--dark-gray); + font-size: 0.9rem; } .search-result-meta { - font-size: 0.75rem; - color: var(--medium-gray); - margin-top: 2px; + font-size: 0.75rem; + color: var(--medium-gray); + margin-top: 2px; } .search-result-badge { - padding: 3px 8px; - border-radius: 12px; - font-size: 0.7rem; - font-weight: 600; + padding: 3px 8px; + border-radius: 12px; + font-size: 0.7rem; + font-weight: 600; } .search-result-badge.trial { - background-color: #e3f2fd; - color: #1976d2; + background-color: #e3f2fd; + color: #1976d2; } .search-result-badge.progress { - background-color: #fff3e0; - color: #f57c00; + background-color: #fff3e0; + color: #f57c00; } .search-result-badge.followup { - background-color: #e8f5e9; - color: #388e3c; + background-color: #e8f5e9; + color: #388e3c; } .search-empty { - padding: 20px; - text-align: center; - color: var(--medium-gray); - font-size: 0.9rem; + padding: 20px; + text-align: center; + color: var(--medium-gray); + font-size: 0.9rem; } .search-history-item { - font-size: 0.85rem; - color: var(--dark-gray); + font-size: 0.85rem; + color: var(--dark-gray); } .search-history-item i { - color: var(--medium-gray); + color: var(--medium-gray); } /* Quick Add Dropdown Styles */ .quick-add-dropdown-container { - position: relative; + position: relative; } .quick-add-btn { - padding: 8px 16px; - font-size: 0.85rem; + padding: 8px 16px; + font-size: 0.85rem; } .quick-add-btn .fa-caret-down { - margin-left: 4px; - font-size: 0.8rem; + margin-left: 4px; + font-size: 0.8rem; } .quick-add-dropdown { - position: absolute; - top: 100%; - right: 0; - background-color: var(--white); - border-radius: 10px; - box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); - margin-top: 8px; - min-width: 200px; - z-index: 2000; - overflow: hidden; + position: absolute; + top: 100%; + right: 0; + background-color: var(--white); + border-radius: 10px; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15); + margin-top: 8px; + min-width: 200px; + z-index: 2000; + overflow: hidden; } .quick-add-menu-item { - padding: 12px 18px; - cursor: pointer; - display: flex; - align-items: center; - gap: 12px; - transition: all 0.2s ease; - color: var(--dark-gray); - font-size: 0.9rem; + padding: 12px 18px; + cursor: pointer; + display: flex; + align-items: center; + gap: 12px; + transition: all 0.2s ease; + color: var(--dark-gray); + font-size: 0.9rem; } .quick-add-menu-item:hover { - background-color: rgba(255, 107, 53, 0.1); + background-color: rgba(255, 107, 53, 0.1); } .quick-add-menu-item i { - width: 20px; - text-align: center; + width: 20px; + text-align: center; } .quick-add-menu-item[data-action="trial"] i { - color: #17a2b8; + color: #17a2b8; } .quick-add-menu-item[data-action="customer"] i { - color: #28a745; + color: #28a745; } .quick-add-menu-item[data-action="followup"] i { - color: #ffc107; + color: #ffc107; } /* Color System Variables Update */ :root { - --status-success: #27ae60; - --status-in-progress: #3498db; - --status-warning: #f39c12; - --status-error: #e74c3c; - --status-inactive: #95a5a6; - --brand-dark: #2c3e50; + --status-success: #27ae60; + --status-in-progress: #3498db; + --status-warning: #f39c12; + --status-error: #e74c3c; + --status-inactive: #95a5a6; + --brand-dark: #2c3e50; } /* Responsive Improvements */ @media (max-width: 1200px) { - .search-box { - width: 250px; - } + .search-box { + width: 250px; + } - .quick-add-btn span { - display: none; - } + .quick-add-btn span { + display: none; + } - .quick-add-btn { - padding: 8px 12px; - } + .quick-add-btn { + padding: 8px 12px; + } } @media (max-width: 992px) { - .search-box { - width: 200px; - } + .search-box { + width: 200px; + } - .search-shortcut { - display: none; - } + .search-shortcut { + display: none; + } } @media (max-width: 768px) { - .global-search-container { - display: none; - } + .global-search-container { + display: none; + } - .header-right { - gap: 10px; - } + .header-right { + gap: 10px; + } - .menu-toggle { - display: block; - } + .menu-toggle { + display: block; + } - .sidebar { - transform: translateX(-100%); - } + .sidebar { + transform: translateX(-100%); + } - .sidebar.show { - transform: translateX(0); - } + .sidebar.show { + transform: translateX(0); + } - .main-content { - margin-left: 0; - } + .main-content { + margin-left: 0; + } } /* Dashboard Cards Responsive */ .dashboard-stats { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 20px; + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; } @media (max-width: 1200px) { - .dashboard-stats { - grid-template-columns: repeat(2, 1fr); - } + .dashboard-stats { + grid-template-columns: repeat(2, 1fr); + } } @media (max-width: 576px) { - .dashboard-stats { - grid-template-columns: 1fr; - } + .dashboard-stats { + grid-template-columns: 1fr; + } } /* Enhanced Status Colors */ .status-badge.status-active { - background-color: rgba(39, 174, 96, 0.15); - color: var(--status-success); - border-color: rgba(39, 174, 96, 0.3); + background-color: rgba(39, 174, 96, 0.15); + color: var(--status-success); + border-color: rgba(39, 174, 96, 0.3); } .status-badge.status-warning { - background-color: rgba(243, 156, 18, 0.15); - color: var(--status-warning); - border-color: rgba(243, 156, 18, 0.3); + background-color: rgba(243, 156, 18, 0.15); + color: var(--status-warning); + border-color: rgba(243, 156, 18, 0.3); } .status-badge.status-expired, .status-badge.status-urgent { - background-color: rgba(231, 76, 60, 0.15); - color: var(--status-error); - border-color: rgba(231, 76, 60, 0.3); + background-color: rgba(231, 76, 60, 0.15); + color: var(--status-error); + border-color: rgba(231, 76, 60, 0.3); } .status-badge.status-inactive { - background-color: rgba(149, 165, 166, 0.15); - color: var(--status-inactive); - border-color: rgba(149, 165, 166, 0.3); + background-color: rgba(149, 165, 166, 0.15); + color: var(--status-inactive); + border-color: rgba(149, 165, 166, 0.3); } .progress-badge.progress-completed { - background-color: rgba(39, 174, 96, 0.15); - color: var(--status-success); + background-color: rgba(39, 174, 96, 0.15); + color: var(--status-success); } .progress-badge.progress-in-progress { - background-color: rgba(52, 152, 219, 0.15); - color: var(--status-in-progress); + background-color: rgba(52, 152, 219, 0.15); + color: var(--status-in-progress); } .progress-badge.progress-pending { - background-color: rgba(243, 156, 18, 0.15); - color: var(--status-warning); + background-color: rgba(243, 156, 18, 0.15); + color: var(--status-warning); } .progress-badge.progress-rejected { - background-color: rgba(231, 76, 60, 0.15); - color: var(--status-error); + background-color: rgba(231, 76, 60, 0.15); + color: var(--status-error); } /* Keyboard Shortcut Indicator */ .keyboard-shortcut { - background-color: rgba(0, 0, 0, 0.08); - padding: 2px 6px; - border-radius: 4px; - font-size: 0.7rem; - color: var(--medium-gray); - font-family: system-ui; + background-color: rgba(0, 0, 0, 0.08); + padding: 2px 6px; + border-radius: 4px; + font-size: 0.7rem; + color: var(--medium-gray); + font-family: system-ui; } /* Refresh Button Animation */ @keyframes spin { - 0% { - transform: rotate(0deg); - } + 0% { + transform: rotate(0deg); + } - 100% { - transform: rotate(360deg); - } + 100% { + transform: rotate(360deg); + } } .icon-btn.refreshing i { - animation: spin 0.8s linear infinite; + animation: spin 0.8s linear infinite; } .icon-btn.refreshing { - pointer-events: none; - opacity: 0.7; + pointer-events: none; + opacity: 0.7; } /* Refresh button success feedback */ .icon-btn.refresh-success { - color: #27ae60 !important; - background-color: rgba(39, 174, 96, 0.15) !important; + color: #27ae60 !important; + background-color: rgba(39, 174, 96, 0.15) !important; } .icon-btn.refresh-success i::before { - content: "\f00c"; - /* Font Awesome check icon */ + content: "\f00c"; + /* Font Awesome check icon */ } /* Table refresh animation */ @keyframes tableRefresh { - 0% { - opacity: 0.3; - } + 0% { + opacity: 0.3; + } - 50% { - opacity: 0.6; - } + 50% { + opacity: 0.6; + } - 100% { - opacity: 1; - } + 100% { + opacity: 1; + } } .table-refreshing { - animation: tableRefresh 0.5s ease-out; + animation: tableRefresh 0.5s ease-out; } /* Row highlight on refresh */ @keyframes rowHighlight { - 0% { - background-color: rgba(255, 107, 53, 0.2); - transform: translateX(-5px); - } + 0% { + background-color: rgba(255, 107, 53, 0.2); + transform: translateX(-5px); + } - 100% { - background-color: transparent; - transform: translateX(0); - } + 100% { + background-color: transparent; + transform: translateX(0); + } } .table-refreshing tbody tr { - animation: rowHighlight 0.4s ease-out; + animation: rowHighlight 0.4s ease-out; } /* ==================== Customer Tabs Styles ==================== */ .customer-tabs { - display: flex; - gap: 8px; - margin: 0; - flex: 1; + display: flex; + gap: 8px; + margin: 0; + flex: 1; } .customer-tab { - display: flex; - align-items: center; - gap: 6px; - padding: 8px 16px; - border: 1px solid var(--border-color); - border-radius: 20px; - background: var(--white); - color: var(--medium-gray); - font-size: 0.85rem; - font-weight: 500; - cursor: pointer; - transition: all 0.3s ease; + display: flex; + align-items: center; + gap: 6px; + padding: 8px 16px; + border: 1px solid var(--border-color); + border-radius: 20px; + background: var(--white); + color: var(--medium-gray); + font-size: 0.85rem; + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; } .customer-tab:hover { - border-color: var(--primary-orange); - color: var(--primary-orange); - background: rgba(255, 107, 53, 0.05); + border-color: var(--primary-orange); + color: var(--primary-orange); + background: rgba(255, 107, 53, 0.05); } .customer-tab.active { - background: linear-gradient(135deg, var(--primary-orange), var(--secondary-orange)); - color: var(--white); - border-color: transparent; - box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3); + background: linear-gradient( + 135deg, + var(--primary-orange), + var(--secondary-orange) + ); + color: var(--white); + border-color: transparent; + box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3); } .customer-tab.active i { - color: var(--white); + color: var(--white); } .customer-tab i { - font-size: 0.9rem; + font-size: 0.9rem; } /* Tab Content */ .tab-content { - display: none; + display: none; } .tab-content.active { - display: block; - animation: fadeIn 0.3s ease-out; + display: block; + animation: fadeIn 0.3s ease-out; } @keyframes fadeIn { - from { - opacity: 0; - transform: translateY(10px); - } + from { + opacity: 0; + transform: translateY(10px); + } - to { - opacity: 1; - transform: translateY(0); - } + to { + opacity: 1; + transform: translateY(0); + } } /* ==================== Weekly Summary Styles ==================== */ .weekly-summary-header { - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: wrap; - gap: 15px; - padding: 15px 20px; - background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); - border-radius: 10px; - margin-bottom: 20px; + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + gap: 15px; + padding: 15px 20px; + background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); + border-radius: 10px; + margin-bottom: 20px; } .week-info { - display: flex; - align-items: center; - gap: 10px; - font-size: 1rem; - font-weight: 600; - color: var(--dark-gray); + display: flex; + align-items: center; + gap: 10px; + font-size: 1rem; + font-weight: 600; + color: var(--dark-gray); } .week-info i { - font-size: 1.2rem; - color: var(--primary-orange); + font-size: 1.2rem; + color: var(--primary-orange); } .week-navigation { - display: flex; - align-items: center; - gap: 8px; + display: flex; + align-items: center; + gap: 8px; } .week-nav-btn { - display: flex; - align-items: center; - gap: 6px; - padding: 8px 16px; - border: 1px solid var(--border-color); - border-radius: 6px; - background: var(--white); - color: var(--medium-gray); - font-size: 0.85rem; - cursor: pointer; - transition: all 0.3s ease; + display: flex; + align-items: center; + gap: 6px; + padding: 8px 16px; + border: 1px solid var(--border-color); + border-radius: 6px; + background: var(--white); + color: var(--medium-gray); + font-size: 0.85rem; + cursor: pointer; + transition: all 0.3s ease; } .week-nav-btn:hover { - border-color: var(--primary-orange); - color: var(--primary-orange); - background: rgba(255, 107, 53, 0.05); + border-color: var(--primary-orange); + color: var(--primary-orange); + background: rgba(255, 107, 53, 0.05); } .week-nav-btn:active { - transform: scale(0.98); + transform: scale(0.98); } .weekly-summary-container { - display: flex; - flex-direction: column; - gap: 20px; + display: flex; + flex-direction: column; + gap: 20px; } .weekly-summary-empty { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 60px 20px; - color: var(--medium-gray); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 60px 20px; + color: var(--medium-gray); } .weekly-summary-empty i { - font-size: 4rem; - color: #ddd; - margin-bottom: 15px; + font-size: 4rem; + color: #ddd; + margin-bottom: 15px; } .weekly-summary-empty p { - font-size: 1rem; + font-size: 1rem; } /* Customer Summary Card */ .customer-summary-card { - background: var(--white); - border-radius: 12px; - border: 1px solid var(--border-color); - overflow: hidden; - transition: box-shadow 0.3s ease, transform 0.3s ease; + background: var(--white); + border-radius: 12px; + border: 1px solid var(--border-color); + overflow: hidden; + transition: + box-shadow 0.3s ease, + transform 0.3s ease; } .customer-summary-card:hover { - box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); - transform: translateY(-2px); + box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1); + transform: translateY(-2px); } .customer-summary-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 15px 20px; - background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); - color: var(--white); + display: flex; + align-items: center; + justify-content: space-between; + padding: 15px 20px; + background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); + color: var(--white); } .customer-summary-name { - display: flex; - align-items: center; - gap: 10px; - font-size: 1.1rem; - font-weight: 600; + display: flex; + align-items: center; + gap: 10px; + font-size: 1.1rem; + font-weight: 600; } .customer-summary-name i { - color: var(--primary-orange); + color: var(--primary-orange); } .customer-summary-badge { - display: flex; - align-items: center; - gap: 6px; - padding: 4px 12px; - background: rgba(255, 107, 53, 0.2); - border-radius: 20px; - font-size: 0.8rem; - color: var(--primary-orange); + display: flex; + align-items: center; + gap: 6px; + padding: 4px 12px; + background: rgba(255, 107, 53, 0.2); + border-radius: 20px; + font-size: 0.8rem; + color: var(--primary-orange); } .customer-summary-body { - padding: 15px 20px; + padding: 15px 20px; } .summary-section { - margin-bottom: 0; + margin-bottom: 0; } .summary-section:last-child { - margin-bottom: 0; + margin-bottom: 0; } .summary-section-title { - display: flex; - align-items: center; - gap: 8px; - font-size: 0.9rem; - font-weight: 600; - color: var(--dark-gray); - margin-bottom: 12px; - padding-bottom: 8px; - border-bottom: 2px solid var(--border-color); + display: flex; + align-items: center; + gap: 8px; + font-size: 0.9rem; + font-weight: 600; + color: var(--dark-gray); + margin-bottom: 12px; + padding-bottom: 8px; + border-bottom: 2px solid var(--border-color); } .summary-section-title i { - color: var(--primary-orange); + color: var(--primary-orange); } .summary-items { - display: flex; - flex-direction: column; - gap: 6px; + display: flex; + flex-direction: column; + gap: 6px; } .summary-item { - display: flex; - align-items: center; - gap: 12px; - padding: 8px 12px; - background: var(--light-gray); - border-radius: 6px; - border-left: 3px solid var(--primary-orange); - min-height: auto; + display: flex; + align-items: center; + gap: 12px; + padding: 8px 12px; + background: var(--light-gray); + border-radius: 6px; + border-left: 3px solid var(--primary-orange); + min-height: auto; } .summary-item-date { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - gap: 4px; - width: 80px; - min-width: 80px; - max-width: 80px; - padding: 4px 8px; - background: var(--white); - border-radius: 4px; - font-size: 0.75rem; - color: var(--medium-gray); - text-align: center; - white-space: nowrap; - flex-shrink: 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + gap: 4px; + width: 80px; + min-width: 80px; + max-width: 80px; + padding: 4px 8px; + background: var(--white); + border-radius: 4px; + font-size: 0.75rem; + color: var(--medium-gray); + text-align: center; + white-space: nowrap; + flex-shrink: 0; } .summary-item-date .day { - font-size: 0.9rem; - font-weight: 600; - color: var(--dark-gray); + font-size: 0.9rem; + font-weight: 600; + color: var(--dark-gray); } .summary-item-content { - flex: 1; - font-size: 0.85rem; - color: var(--dark-gray); - line-height: 1.5; - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 8px; + flex: 1; + font-size: 0.85rem; + color: var(--dark-gray); + line-height: 1.5; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; } .summary-item-content.combined-content { - display: flex; - flex-direction: row; - flex-wrap: nowrap; - align-items: flex-start; - gap: 10px; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: flex-start; + gap: 10px; } .content-row { - display: flex; - align-items: flex-start; - gap: 6px; - width: 35%; - min-width: 200px; - flex-shrink: 0; + display: flex; + align-items: flex-start; + gap: 6px; + width: 35%; + min-width: 200px; + flex-shrink: 0; } .content-label { - color: var(--primary-orange); - font-size: 0.9rem; - min-width: 18px; - flex-shrink: 0; + color: var(--primary-orange); + font-size: 0.9rem; + min-width: 18px; + flex-shrink: 0; } .content-text { - flex: 1; - word-break: break-word; - line-height: 1.4; + flex: 1; + word-break: break-word; + line-height: 1.4; } .content-divider { - width: 1px; - height: 20px; - background: var(--border-color); - margin: 0 5px; + width: 1px; + height: 20px; + background: var(--border-color); + margin: 0 5px; } .summary-item-meta { - display: flex; - align-items: center; - gap: 10px; - min-width: 280px; - font-size: 0.75rem; - color: var(--medium-gray); - flex-shrink: 0; - white-space: nowrap; + display: flex; + align-items: center; + gap: 10px; + min-width: 280px; + font-size: 0.75rem; + color: var(--medium-gray); + flex-shrink: 0; + white-space: nowrap; } .summary-item-meta span { - display: flex; - align-items: center; - gap: 4px; + display: flex; + align-items: center; + gap: 4px; } .summary-item-meta i { - font-size: 0.75rem; + font-size: 0.75rem; } /* Customer Statistics */ .customer-summary-stats { - display: flex; - gap: 20px; - padding: 12px 20px; - background: rgba(255, 107, 53, 0.05); - border-top: 1px solid var(--border-color); + display: flex; + gap: 20px; + padding: 12px 20px; + background: rgba(255, 107, 53, 0.05); + border-top: 1px solid var(--border-color); } .stat-item { - display: flex; - align-items: center; - gap: 8px; - font-size: 0.85rem; - color: var(--medium-gray); + display: flex; + align-items: center; + gap: 8px; + font-size: 0.85rem; + color: var(--medium-gray); } .stat-item i { - color: var(--primary-orange); + color: var(--primary-orange); } .stat-item strong { - color: var(--dark-gray); + color: var(--dark-gray); } /* Responsive adjustments */ @media (max-width: 768px) { - .customer-tabs { - order: 3; - width: 100%; - margin: 15px 0 0 0; - justify-content: center; - } + .customer-tabs { + order: 3; + width: 100%; + margin: 15px 0 0 0; + justify-content: center; + } - .weekly-summary-header { - flex-direction: column; - align-items: stretch; - } + .weekly-summary-header { + flex-direction: column; + align-items: stretch; + } - .week-info, - .week-navigation { - justify-content: center; - } + .week-info, + .week-navigation { + justify-content: center; + } - .customer-summary-header { - flex-direction: column; - gap: 10px; - text-align: center; - } + .customer-summary-header { + flex-direction: column; + gap: 10px; + text-align: center; + } - .customer-summary-stats { - flex-wrap: wrap; - justify-content: center; - } + .customer-summary-stats { + flex-wrap: wrap; + justify-content: center; + } - .summary-item { - flex-direction: column; - } + .summary-item { + flex-direction: column; + } - .summary-item-date { - flex-direction: row; - gap: 8px; - min-width: auto; - } -} \ No newline at end of file + .summary-item-date { + flex-direction: row; + gap: 8px; + min-width: auto; + } +} diff --git a/frontend/js/main.js b/frontend/js/main.js index bd41717..c633f56 100644 --- a/frontend/js/main.js +++ b/frontend/js/main.js @@ -1471,7 +1471,7 @@ document.addEventListener("DOMContentLoaded", function () { }, }, title: { - display: true, + display: false, text: chartTitle, font: { size: 16, @@ -1576,7 +1576,7 @@ document.addEventListener("DOMContentLoaded", function () { }, }, title: { - display: true, + display: false, text: chartTitle, font: { size: 16,