diff --git a/frontend/assets/Reports_bg.png b/frontend/src/assets/Reports_bg.png
similarity index 100%
rename from frontend/assets/Reports_bg.png
rename to frontend/src/assets/Reports_bg.png
diff --git a/frontend/src/assets/icons/upload-normal.svg b/frontend/src/assets/icons/upload-normal.svg
new file mode 100644
index 00000000..81c12d8a
--- /dev/null
+++ b/frontend/src/assets/icons/upload-normal.svg
@@ -0,0 +1,22 @@
+
diff --git a/frontend/src/assets/icons/upload-pressed.svg b/frontend/src/assets/icons/upload-pressed.svg
new file mode 100644
index 00000000..64cba665
--- /dev/null
+++ b/frontend/src/assets/icons/upload-pressed.svg
@@ -0,0 +1,12 @@
+
diff --git a/frontend/src/common/components/Router/TabNavigation.scss b/frontend/src/common/components/Router/TabNavigation.scss
index 36eee2b0..9a89c3a2 100644
--- a/frontend/src/common/components/Router/TabNavigation.scss
+++ b/frontend/src/common/components/Router/TabNavigation.scss
@@ -2,9 +2,10 @@
&__bar {
border-radius: 2rem;
margin: 0 0.75rem 0.75rem;
- box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0.125rem 0.5rem rgb(0 0 0 / 10%);
height: var(--tab-bar-height, 3.5rem);
- --background: #ffffff;
+
+ --background: #fff;
/* Override default iOS padding */
padding-bottom: 0;
@@ -45,7 +46,10 @@
display: flex;
align-items: center;
justify-content: center;
- background-color: #4765ff;
+
+ /* Replace solid background with gradient */
+ background-color: transparent;
+ background-image: linear-gradient(135deg, #4765ff 0%, #6357fa 50%, #a557fa 100%);
color: white;
width: 3rem;
height: 3rem;
@@ -54,9 +58,28 @@
bottom: calc(50% - 0.5rem);
left: 50%;
transform: translateX(-50%);
- box-shadow: 0 0.25rem 0.5rem rgba(71, 101, 255, 0.3);
+
+ /* Enhanced shadow effect */
+ box-shadow:
+ 0 0.5rem 1rem rgb(100 87 250 / 40%),
+ 0 0.125rem 0.25rem rgb(65 101 255 / 30%);
z-index: 10;
+ /* Add slight transition for hover effects */
+ transition:
+ transform 0.2s ease,
+ box-shadow 0.2s ease,
+ background-image 0.2s ease,
+ border 0.2s ease;
+
+ /* Active state styling to match the image */
+ &:active {
+ transform: translateX(-50%) scale(0.95);
+ background-image: linear-gradient(135deg, #3a52d0 0%, #4f47c7 50%, #7e44c2 100%);
+ box-shadow: 0 0.25rem 0.5rem rgb(100 87 250 / 30%);
+ border: 2px solid white;
+ }
+
.ls-tab-navigation__bar-button-icon {
color: white;
margin: 0;
diff --git a/frontend/src/common/components/Upload/UploadModal.scss b/frontend/src/common/components/Upload/UploadModal.scss
index 839a3ca9..f34c7d6e 100644
--- a/frontend/src/common/components/Upload/UploadModal.scss
+++ b/frontend/src/common/components/Upload/UploadModal.scss
@@ -15,7 +15,9 @@
&__error-message {
border: 1px solid var(--ion-color-danger);
border-radius: 0.5rem;
+
--background: rgba(var(--ion-color-danger-rgb), 0.2);
+
color: white;
width: 100%;
@@ -28,7 +30,7 @@
color: var(--ion-color-danger);
}
- @media (min-width: 768px) {
+ @media (width >= 768px) {
--width: 28.125rem; // 450px
--height: 65vh; // Use viewport height instead of fixed pixels
--border-radius: 1rem; // Matching the image example
@@ -38,8 +40,10 @@
display: flex;
flex-direction: column;
padding: 1.25rem;
+
--background: var(--ion-color-primary);
--color: white;
+
border-radius: 1rem;
}
@@ -58,7 +62,9 @@
.upload-modal__close-button {
--color: white;
+
margin: 0;
+
--padding-start: 0.5rem;
--padding-end: 0.5rem;
}
@@ -81,9 +87,9 @@
justify-content: center;
width: 100%;
padding: 2rem 1rem;
- border: 0.0625rem dashed rgba(255, 255, 255, 0.5);
+ border: 0.0625rem dashed rgb(255 255 255 / 50%);
border-radius: 0.75rem;
- background-color: rgba(255, 255, 255, 0.1);
+ background-color: rgb(255 255 255 / 10%);
margin: 0.75rem 0;
h2 {
@@ -97,7 +103,7 @@
p {
margin-top: 0;
margin-bottom: 0.5rem;
- color: rgba(255, 255, 255, 0.7);
+ color: rgb(255 255 255 / 70%);
font-size: 0.875rem;
}
}
@@ -123,7 +129,7 @@
p {
margin-bottom: 0.25rem;
font-size: 0.75rem;
- color: rgba(255, 255, 255, 0.7);
+ color: rgb(255 255 255 / 70%);
}
}
@@ -136,28 +142,33 @@
width: 100%;
max-width: 12rem;
font-weight: 500;
+
--background: white;
--color: var(--ion-color-primary);
--border-radius: 0.5rem;
+
height: 2.5rem;
+
+ // Override Ionic button internals with a more direct approach
+ --background-activated: inherit !important;
+
+ &.ion-activated::part(native) {
+ background-color: white !important;
+ box-shadow: inset 0 1px 3px rgb(0 0 0 / 20%);
+ border: 1px solid #abbccd;
+ }
}
&__selected-file {
- background-color: rgba(255, 255, 255, 0.1);
+ background-color: rgb(255 255 255 / 10%);
border-radius: 0.5rem;
padding: 1rem;
margin-bottom: 1rem;
}
- &__filename {
- font-weight: 600;
- margin-bottom: 0.5rem;
- word-break: break-all;
- color: white;
- }
-
&__start-upload {
margin-top: 0.5rem;
+
--background: white;
--color: var(--ion-color-primary);
}
@@ -171,14 +182,8 @@
width: 100%;
}
- &__file-info {
- width: 100%;
- text-align: center;
- margin-bottom: 1.5rem;
- }
-
&__filesize {
- color: rgba(255, 255, 255, 0.7);
+ color: rgb(255 255 255 / 70%);
font-size: 0.875rem;
margin-top: 0;
}
@@ -190,7 +195,8 @@
height: 0.5rem;
border-radius: 0.25rem;
overflow: hidden;
- --background: rgba(255, 255, 255, 0.2);
+
+ --background: rgb(255 255 255 / 20%);
--progress-background: white;
}
}
@@ -204,12 +210,13 @@
ion-spinner {
width: 1rem;
height: 1rem;
+
--color: white;
}
span {
font-size: 0.875rem;
- color: rgba(255, 255, 255, 0.7);
+ color: rgb(255 255 255 / 70%);
}
}
@@ -231,7 +238,7 @@
}
p {
- color: rgba(255, 255, 255, 0.7);
+ color: rgb(255 255 255 / 70%);
margin-bottom: 2rem;
}
}
@@ -265,6 +272,7 @@
margin-top: 1rem;
width: 100%;
max-width: 15rem;
+
--background: white;
--color: var(--ion-color-primary);
}
@@ -282,12 +290,14 @@
margin-top: 1rem;
width: 100%;
max-width: 12rem; // Match the upload button's max-width
+
--color: white;
- --border-color: rgba(255, 255, 255, 0.6);
- --background: rgba(255, 255, 255, 0.1);
+ --border-color: rgb(255 255 255 / 60%);
+ --background: rgb(255 255 255 / 10%);
--border-radius: 0.5rem;
--border-width: 1px;
--border-style: solid;
+
height: 2.5rem; // Exactly match the upload button's height (40px)
font-weight: 500;
text-transform: none;
@@ -314,7 +324,7 @@
padding: 0.75rem;
margin: 1.5rem 0;
width: 100%;
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 2px 6px rgb(0 0 0 / 10%);
max-width: 100%;
box-sizing: border-box;
}
@@ -365,8 +375,10 @@
height: 0.25rem;
border-radius: 0.125rem;
margin-top: 0.25rem;
- --background: rgba(0, 0, 0, 0.1);
+
+ --background: rgb(0 0 0 / 10%);
--progress-background: var(--ion-color-primary);
+
width: 100%;
}
@@ -375,7 +387,7 @@
display: flex;
align-items: center;
border-radius: 4px;
- background: rgba(41, 69, 196, 0.5); // Darker blue background matching design
+ background: rgb(41 69 196 / 50%); // Darker blue background matching design
padding: 12px 16px;
margin: 5px 0;
width: 100%;
diff --git a/frontend/src/pages/Home/HomePage.scss b/frontend/src/pages/Home/HomePage.scss
index 7e62544c..16070de3 100644
--- a/frontend/src/pages/Home/HomePage.scss
+++ b/frontend/src/pages/Home/HomePage.scss
@@ -1,6 +1,4 @@
.home-page {
- background: url('../../../assets/Reports_bg.png') no-repeat center center;
- background-color: var(--ion-color-light);
min-height: 100%;
&__greeting {
@@ -19,7 +17,7 @@
}
&-title {
- font-family: 'Merriweather', serif;
+ font-family: Merriweather, serif;
font-size: 1rem;
color: var(--ion-color-medium);
margin: 0 0 0.25rem;
@@ -41,19 +39,21 @@
width: 4rem;
height: 4rem;
border: 3px solid white;
- box-shadow: 0 0.125rem 0.5rem rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0.125rem 0.5rem rgb(0 0 0 / 10%);
}
}
&__ai-card {
margin-bottom: 1.5rem;
border-radius: 1rem;
- box-shadow: 0 0.25rem 1rem rgba(71, 101, 255, 0.1);
+ box-shadow: 0 0.25rem 1rem rgb(71 101 255 / 10%);
background-color: #4765ff;
overflow: visible;
position: relative;
+
--ion-card-margin-start: 0;
--ion-card-margin-end: 0;
+
margin-inline: 0;
height: 7.5rem;
@@ -187,7 +187,6 @@
max-width: 100%;
height: auto;
display: block;
- vertical-align: bottom;
margin-bottom: 0;
}
}
@@ -217,12 +216,15 @@
&-list {
margin-bottom: 1rem;
background: transparent;
+ box-shadow: none;
ion-item {
--background: white;
- --border-color: rgba(0, 0, 0, 0.05);
+ --border-color: rgb(0 0 0 / 5%);
+
margin-bottom: 0.5rem;
border-radius: 0.75rem;
+
--padding-start: 1rem;
--padding-end: 1rem;
@@ -233,12 +235,6 @@
}
}
- &__reports-list {
- margin-bottom: 2rem;
- box-shadow: none;
- background: transparent;
- }
-
&__empty-state {
display: flex;
justify-content: center;
diff --git a/frontend/src/pages/Reports/ReportDetailPage.scss b/frontend/src/pages/Reports/ReportDetailPage.scss
index 422fa3ab..59ecd0d4 100644
--- a/frontend/src/pages/Reports/ReportDetailPage.scss
+++ b/frontend/src/pages/Reports/ReportDetailPage.scss
@@ -1,13 +1,8 @@
.report-detail-page {
--padding-horizontal: 16px;
- --page-background: radial-gradient(
- circle,
- rgb(250 250 255 / 83%) 0%,
- rgb(249 252 255 / 100%) 100%
- );
ion-content {
- --background: var(--page-background);
+ /* Removing custom background to use global background */
}
&__header {
diff --git a/frontend/src/pages/Reports/components/FilterPanel/FilterPanel.scss b/frontend/src/pages/Reports/components/FilterPanel/FilterPanel.scss
index 84002356..d011ca0a 100644
--- a/frontend/src/pages/Reports/components/FilterPanel/FilterPanel.scss
+++ b/frontend/src/pages/Reports/components/FilterPanel/FilterPanel.scss
@@ -36,8 +36,8 @@
background-color: white;
border: 1px solid #838b94;
border-radius: 8px;
- padding: 0.75rem 0.5rem;
- font-size: 14px;
+ padding: 12px 8px;
+ font-size: 13px;
font-weight: 500;
color: var(--ion-color-medium);
transition: all 0.2s ease;
@@ -66,7 +66,7 @@
font-family: var(--font-family-base);
--background: #435ff0;
--color: white;
- height: 48px;
+ height: 60px;
font-weight: 600;
margin: 0;
--border-radius: 12px;
diff --git a/frontend/src/theme/theme-overrides.css b/frontend/src/theme/theme-overrides.css
index b7e0b51f..dd476a9a 100644
--- a/frontend/src/theme/theme-overrides.css
+++ b/frontend/src/theme/theme-overrides.css
@@ -59,13 +59,31 @@
/* Global safe area padding for all pages */
ion-content {
--padding-top: var(--ion-safe-area-top, 1rem);
+ --background: transparent !important;
}
/* Background for the entire app */
body,
ion-app,
ion-content {
- background: url('../../assets/Reports_bg.png') no-repeat center center !important;
+ background: url('../assets/Reports_bg.png') no-repeat center center fixed !important;
+ background-size: cover !important;
+}
+
+/* Ensure background is applied to specific pages */
+.home-page,
+.report-detail-page,
+.reports-list-page {
+ background: transparent !important;
+}
+
+.report-detail-page ion-content {
+ --background: transparent !important;
+}
+
+/* Override any other page-specific backgrounds */
+ion-content::part(background) {
+ background: transparent !important;
}
/* Remove left padding from router outlet to avoid double padding */