diff --git a/static/css/auth.css b/static/css/auth.css index e1ce56a..d99f996 100644 --- a/static/css/auth.css +++ b/static/css/auth.css @@ -104,6 +104,7 @@ body.auth-page::after { background-color: #f8f9fa; line-height: 1.5; height: 48px; /* Fixed height for consistent alignment */ + font-family: inherit; } .form-control:focus { @@ -376,7 +377,7 @@ body.auth-page::after { .company-code-group .form-control { padding-left: 3.5rem; - font-family: 'Courier New', monospace; + font-family: inherit; font-size: 1.2rem; letter-spacing: 0.1em; text-transform: uppercase; diff --git a/static/css/fonts.css b/static/css/fonts.css new file mode 100644 index 0000000..22f6232 --- /dev/null +++ b/static/css/fonts.css @@ -0,0 +1,57 @@ +/* Inter Font Self-Hosted */ + +/* Inter Light (300) */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url('../fonts/inter/Inter-Light.woff2') format('woff2'); +} + +/* Inter Regular (400) */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('../fonts/inter/Inter-Regular.woff2') format('woff2'); +} + +/* Inter Medium (500) */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url('../fonts/inter/Inter-Medium.woff2') format('woff2'); +} + +/* Inter SemiBold (600) */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('../fonts/inter/Inter-SemiBold.woff2') format('woff2'); +} + +/* Inter Bold (700) */ +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url('../fonts/inter/Inter-Bold.woff2') format('woff2'); +} + +/* Optional: Inter Variable Font for modern browsers */ +@supports (font-variation-settings: normal) { + @font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url('../fonts/inter/InterVariable.woff2') format('woff2-variations'); + } +} \ No newline at end of file diff --git a/static/css/splash.css b/static/css/splash.css index 04a9996..d4da092 100644 --- a/static/css/splash.css +++ b/static/css/splash.css @@ -4,7 +4,7 @@ .splash-container { margin: -2rem -2rem 0 -2rem; padding: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; + font-family: inherit; } /* Hero Section */ @@ -60,6 +60,7 @@ transition: all 0.3s ease; font-weight: 500; display: inline-block; + font-family: inherit; } .btn-primary { @@ -380,6 +381,7 @@ border-radius: 6px; transition: all 0.3s ease; font-weight: 500; + font-family: inherit; } .btn-pricing:hover { diff --git a/static/css/style.css b/static/css/style.css index 584ba39..9f94f8b 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -5,11 +5,38 @@ } body { - font-family: Arial, sans-serif; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; line-height: 1.6; color: #333; margin: 0; padding: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Typography */ +h1, h2, h3, h4, h5, h6 { + font-weight: 600; + letter-spacing: -0.025em; + line-height: 1.3; + margin-top: 0; + margin-bottom: 1rem; +} + +h1 { font-size: 2.5rem; font-weight: 700; } +h2 { font-size: 2rem; font-weight: 600; } +h3 { font-size: 1.5rem; font-weight: 600; } +h4 { font-size: 1.25rem; font-weight: 600; } +h5 { font-size: 1.1rem; font-weight: 600; } +h6 { font-size: 1rem; font-weight: 600; } + +/* Ensure all form elements inherit font */ +input, +textarea, +select, +button { + font-family: inherit; + font-size: inherit; } /* Mobile Header Styles */ @@ -69,16 +96,41 @@ body { /* Sidebar Styles */ .sidebar { position: fixed; - top: 0; - left: 0; + top: 1rem; + left: 1rem; width: 280px; - height: 100vh; - background-color: #3d9c17; - color: white; + height: calc(100vh - 2rem); + background-color: #f8f9fa; + color: #333; overflow-y: auto; - transition: transform 0.3s ease; + overflow-x: hidden; + transition: transform 0.3s ease, box-shadow 0.3s ease; z-index: 1000; - box-shadow: 2px 0 10px rgba(0,0,0,0.1); + box-shadow: 0 4px 20px rgba(0,0,0,0.08); + border-radius: 12px; + border: 1px solid #e9ecef; +} + +.sidebar:hover { + box-shadow: 0 6px 30px rgba(0,0,0,0.12); +} + +/* Custom scrollbar for sidebar */ +.sidebar::-webkit-scrollbar { + width: 6px; +} + +.sidebar::-webkit-scrollbar-track { + background: transparent; +} + +.sidebar::-webkit-scrollbar-thumb { + background: #dee2e6; + border-radius: 3px; +} + +.sidebar::-webkit-scrollbar-thumb:hover { + background: #adb5bd; } .sidebar.collapsed { @@ -92,26 +144,39 @@ body { } .sidebar-header { - padding: 1.5rem; - background-color: #34495e; + padding: 0.75rem 1.25rem; + background-color: #fff; display: flex; justify-content: space-between; align-items: center; - border-bottom: 1px solid #3a5269; + border-bottom: 1px solid #e9ecef; position: relative; gap: 0.5rem; + border-radius: 12px 12px 0 0; } .sidebar-header h2 { margin: 0; - color: white; - font-size: 1.5rem; - font-weight: bold; + color: #333; + font-size: 1.4rem; + font-weight: 600; } .sidebar-header h2 a { - color: white; + color: #333; text-decoration: none; + transition: color 0.2s ease; +} + +.sidebar-header h2 a:hover { + color: #4CAF50; +} + +.sidebar-header small { + color: #6c757d; + font-size: 0.85rem; + display: block; + margin-top: 0.25rem; } .sidebar-toggle { @@ -130,14 +195,14 @@ body { display: block; height: 2px; width: 100%; - background-color: white; + background-color: #6c757d; border-radius: 1px; transition: all 0.3s ease; } .sidebar-nav { - padding: 0; - font-weight: bold; + padding: 0.25rem 0; + font-weight: 500; } .sidebar-nav ul { @@ -153,41 +218,44 @@ body { .sidebar-nav li a { display: flex; align-items: center; - padding: 1rem 1.5rem; - color: #ecf0f1; + padding: 0.5rem 1.25rem; + color: #495057; text-decoration: none; - transition: all 0.3s ease; + transition: all 0.2s ease; border-left: 3px solid transparent; + font-size: 0.9rem; + line-height: 1.2; } .sidebar-nav li a:hover { - background-color: #34495e; + background-color: #e9ecef; border-left-color: #4CAF50; - color: white; + color: #333; } .sidebar-nav li a.active { - background-color: #4CAF50; - border-left-color: #45a049; - color: white; + background-color: #e8f5e9; + border-left-color: #4CAF50; + color: #2e7d32; + font-weight: 600; } .nav-icon { - margin-right: 1rem; - font-size: 1.2rem; - min-width: 24px; + margin-right: 0.75rem; + font-size: 1.1rem; + min-width: 20px; text-align: center; } .nav-divider { - padding: 0.75rem 1.5rem 0.25rem; - font-size: 0.85rem; - color: #d9ffd1; + padding: 0.4rem 1.25rem 0.2rem; + font-size: 0.7rem; + color: #6c757d; text-transform: uppercase; font-weight: 600; letter-spacing: 0.5px; - border-top: 1px solid #3a5269; - margin-top: 0.5rem; + border-top: 1px solid #e9ecef; + margin-top: 0.25rem; } .nav-divider:first-child { @@ -209,7 +277,7 @@ body { } .sidebar.collapsed .sidebar-nav li a { - padding: 1rem 0.5rem; + padding: 0.5rem 0.5rem; justify-content: center; position: relative; } @@ -254,7 +322,7 @@ body { } .main-content { - margin-left: 280px; + margin-left: 308px; /* 280px sidebar + 28px (1rem left + 1rem gap + 0.75rem) */ padding: 2rem; min-height: 100vh; transition: margin-left 0.3s ease; @@ -267,12 +335,12 @@ body:not(.has-user) .main-content { /* Main content adjustments for collapsed sidebar */ body:has(.sidebar.collapsed) .main-content { - margin-left: 60px; + margin-left: 88px; /* 60px collapsed + 28px margins */ } /* Fallback for browsers that don't support :has() */ .sidebar.collapsed ~ .main-content { - margin-left: 60px; + margin-left: 88px; } .hero { @@ -324,6 +392,8 @@ body:has(.sidebar.collapsed) .main-content { padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px; + font-family: inherit; + font-size: inherit; } /* Button Base Styles */ @@ -335,6 +405,9 @@ button { cursor: pointer; border-radius: 4px; transition: all 0.2s ease; + font-family: inherit; + font-size: inherit; + font-weight: 500; } .btn { @@ -349,6 +422,7 @@ button { transition: all 0.2s ease; line-height: 1.5; font-weight: 500; + font-family: inherit; } /* Button Sizes */ @@ -485,7 +559,7 @@ footer { padding: 1rem; background-color: #f4f4f4; margin-top: 2rem; - margin-left: 280px; + margin-left: 308px; transition: margin-left 0.3s ease; } @@ -496,12 +570,12 @@ body:not(.has-user) footer { /* Footer adjustments for collapsed sidebar */ body:has(.sidebar.collapsed) footer { - margin-left: 60px; + margin-left: 88px; } /* Fallback for browsers that don't support :has() */ .sidebar.collapsed ~ footer { - margin-left: 60px; + margin-left: 88px; } /* Time tracking specific styles */ @@ -775,7 +849,7 @@ body:has(.sidebar.collapsed) footer { } input[type="date"], input[type="time"] { - font-family: monospace; + font-family: inherit; padding: 8px; width: 100%; } @@ -783,7 +857,7 @@ input[type="date"], input[type="time"] { /* Force consistent date format display */ input[type="date"]::-webkit-datetime-edit, input[type="time"]::-webkit-datetime-edit { - font-family: monospace; + font-family: inherit; } /* Add some styling to the format hints */ @@ -1183,7 +1257,11 @@ input[type="time"]::-webkit-datetime-edit { /* Responsive Design for Sidebar Navigation */ @media (max-width: 1024px) { .sidebar { - transform: translateX(-100%); + transform: translateX(calc(-100% - 1rem)); + top: 0; + left: 0; + height: 100vh; + border-radius: 0; } .sidebar.mobile-open { @@ -2319,17 +2397,19 @@ input[type="time"]::-webkit-datetime-edit { /* User Dropdown Styles */ .user-dropdown-toggle { display: block; - padding: 0.75rem 1.25rem; - color: white; + padding: 0.5rem 1.25rem; + color: #495057; text-decoration: none; transition: background-color 0.3s ease; cursor: pointer; width: 100%; text-align: left; + font-size: 0.9rem; } .user-dropdown-toggle:hover { - background-color: rgba(255, 255, 255, 0.1); + background-color: #e9ecef; + color: #333; } .user-dropdown-toggle .nav-icon { diff --git a/static/fonts/inter/Inter-Bold.woff2 b/static/fonts/inter/Inter-Bold.woff2 new file mode 100644 index 0000000..0f1b157 Binary files /dev/null and b/static/fonts/inter/Inter-Bold.woff2 differ diff --git a/static/fonts/inter/Inter-Light.woff2 b/static/fonts/inter/Inter-Light.woff2 new file mode 100644 index 0000000..dbe6143 Binary files /dev/null and b/static/fonts/inter/Inter-Light.woff2 differ diff --git a/static/fonts/inter/Inter-Medium.woff2 b/static/fonts/inter/Inter-Medium.woff2 new file mode 100644 index 0000000..0fd2ee7 Binary files /dev/null and b/static/fonts/inter/Inter-Medium.woff2 differ diff --git a/static/fonts/inter/Inter-Regular.woff2 b/static/fonts/inter/Inter-Regular.woff2 new file mode 100644 index 0000000..b8699af Binary files /dev/null and b/static/fonts/inter/Inter-Regular.woff2 differ diff --git a/static/fonts/inter/Inter-SemiBold.woff2 b/static/fonts/inter/Inter-SemiBold.woff2 new file mode 100644 index 0000000..95c48b1 Binary files /dev/null and b/static/fonts/inter/Inter-SemiBold.woff2 differ diff --git a/static/fonts/inter/InterVariable.woff2 b/static/fonts/inter/InterVariable.woff2 new file mode 100644 index 0000000..22a12b0 Binary files /dev/null and b/static/fonts/inter/InterVariable.woff2 differ diff --git a/templates/layout.html b/templates/layout.html index ea148e3..3776599 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -4,6 +4,7 @@