@@ -1,51 +1,172 @@
/* ============================================
MoneyMap – Modern Fintech Light Theme
============================================ */
/* --- Palette (CSS custom properties) --- */
: root {
--mm-bg : #f7f8fc ;
--mm-surface : #ffffff ;
--mm-primary : #6366f1 ;
--mm-primary-hover : #4f46e5 ;
--mm-primary-soft : rgba ( 99 , 102 , 241 , 0.10 ) ;
--mm-success : #10b981 ;
--mm-success-soft : rgba ( 16 , 185 , 129 , 0.10 ) ;
--mm-danger : #ef4444 ;
--mm-danger-soft : rgba ( 239 , 68 , 68 , 0.10 ) ;
--mm-warning : #f59e0b ;
--mm-warning-soft : rgba ( 245 , 158 , 11 , 0.10 ) ;
--mm-info : #06b6d4 ;
--mm-info-soft : rgba ( 6 , 182 , 212 , 0.10 ) ;
--mm-text : #1e293b ;
--mm-text-secondary : #64748b ;
--mm-border : #e2e8f0 ;
--mm-shadow-sm : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.06 ) ;
--mm-shadow : 0 4 px 12 px rgba ( 0 , 0 , 0 , 0.06 ) ;
--mm-radius : 12 px ;
--mm-radius-sm : 8 px ;
}
/* --- Base --- */
html {
font-size : 14 px ;
}
@ media ( min-width : 768px ) {
html {
font-size : 16 px ;
}
}
. btn : focus , . btn : active : focus , . btn-link . nav-link : focus , . form-control : focus , . form-check-input : focus {
box-shadow : 0 0 0 0.25 rem rgba ( 37 , 140 , 251 , 0.5 ) ;
}
html {
position : relative ;
min-height : 100 % ;
}
@ media ( min-width : 768px ) {
html { font-size : 16 px ; }
}
body {
margin-bottom : 60 px ;
background-color : var ( - - mm - bg ) ;
color : var ( - - mm - text ) ;
font-family : 'Inter' , system-ui , - apple-system , 'Segoe UI' , Roboto , sans-serif ;
-webkit- font-smoothing : antialiased ;
}
/* Active dropdown parent highlighting */
/* --- Focus rings --- */
. btn : focus , . btn : active : focus , . btn-link . nav-link : focus ,
. form-control : focus , . form-check-input : focus , . form-select : focus {
box-shadow : 0 0 0 0.2 rem rgba ( 99 , 102 , 241 , 0.35 ) ;
border-color : var ( - - mm - primary ) ;
}
/* --- Navbar --- */
. navbar {
background-color : var ( - - mm - surface ) ;
border-bottom : 1 px solid var ( - - mm - border ) !important ;
box-shadow : var ( - - mm - shadow - sm ) ;
padding-top : 0.65 rem ;
padding-bottom : 0.65 rem ;
}
. navbar-brand {
color : var ( - - mm - primary ) !important ;
font-weight : 700 ;
font-size : 1.2 rem ;
letter-spacing : -0.02 em ;
}
. navbar . nav-link {
color : var ( - - mm - text - secondary ) !important ;
font-weight : 500 ;
font-size : 0.9 rem ;
transition : color 0.15 s ease ;
}
. navbar . nav-link : hover ,
. navbar . nav-link : focus {
color : var ( - - mm - primary ) !important ;
}
. navbar . nav-item . dropdown . nav-link . dropdown-toggle . active-parent {
color : rgba ( 255 , 255 , 255 , 0.9 ) ;
color : var ( - - mm - primary ) !important ;
}
. navbar . dropdown-menu {
border : 1 px solid var ( - - mm - border ) ;
border-radius : var ( - - mm - radius - sm ) ;
box-shadow : var ( - - mm - shadow ) ;
padding : 0.35 rem 0 ;
}
. navbar . dropdown-item {
font-size : 0.875 rem ;
padding : 0.45 rem 1 rem ;
color : var ( - - mm - text ) ;
}
. navbar . dropdown-item : hover ,
. navbar . dropdown-item : focus {
background-color : var ( - - mm - primary - soft ) ;
color : var ( - - mm - primary ) ;
}
. navbar . btn-primary ,
. navbar . btn-sm . btn-primary {
background-color : var ( - - mm - primary ) ;
border-color : var ( - - mm - primary ) ;
border-radius : var ( - - mm - radius - sm ) ;
font-weight : 600 ;
font-size : 0.85 rem ;
}
. navbar . btn-primary : hover {
background-color : var ( - - mm - primary - hover ) ;
border-color : var ( - - mm - primary - hover ) ;
}
/* Hamburger icon for light navbar */
. navbar-toggler {
border-color : var ( - - mm - border ) ;
}
. navbar-toggler-icon {
background-image : url ( "data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(100,116,139,0.9)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e" ) ;
}
/* Breadcrumb styling */
. breadcrumb-nav {
margin-bottom : 1 rem ;
}
/* --- Breadcrumbs --- */
. breadcrumb-nav { margin-bottom : 1 rem ; }
. breadcrumb-nav . breadcrumb {
background : transparent ;
padding : 0 ;
margin-bottom : 0 ;
font-size : 0.87 5 rem ;
font-size : 0.85 rem ;
}
. breadcrumb-nav . breadcrumb a {
color : var ( - - mm - primary ) ;
}
. breadcrumb-item . active {
color : var ( - - mm - text - secondary ) ;
}
/* Quick-action cards on dashboard */
/* --- Cards --- */
. card {
background-color : var ( - - mm - surface ) ;
border : 1 px solid var ( - - mm - border ) ;
border-radius : var ( - - mm - radius ) !important ;
box-shadow : var ( - - mm - shadow - sm ) ;
transition : box-shadow 0.2 s ease ;
}
. card : hover {
box-shadow : var ( - - mm - shadow ) ;
}
. card-header {
background-color : transparent ;
border-bottom : 1 px solid var ( - - mm - border ) ;
font-weight : 600 ;
font-size : 0.95 rem ;
color : var ( - - mm - text ) ;
padding : 0.85 rem 1.15 rem ;
}
. card-body {
padding : 1.15 rem ;
}
/* Stat cards on dashboard */
. card . fs-3 {
color : var ( - - mm - text ) ;
font-weight : 700 ;
}
/* --- Quick-action cards --- */
. quick-action-card {
transition : transform 0.15 s ease , box-shadow 0.15 s ease ;
text-decoration : none ;
color : inherit ;
}
. quick-action-card : hover {
transform : translateY ( -2 px ) ;
box-shadow : 0 0.25 rem 0.75 rem rgba ( 0 , 0 , 0 , 0.3 ) !important ;
transform : translateY ( -3 px ) ;
box-shadow : 0 6 px 20 px rgba ( 99 , 102 , 241 , 0.12 ) !important ;
}
. quick-action-icon {
width : 48 px ;
@@ -55,4 +176,256 @@ body {
align-items : center ;
justify-content : center ;
font-size : 1.25 rem ;
}
}
/* --- Buttons --- */
. btn-primary {
background-color : var ( - - mm - primary ) ;
border-color : var ( - - mm - primary ) ;
border-radius : var ( - - mm - radius - sm ) ;
font-weight : 600 ;
}
. btn-primary : hover , . btn-primary : active {
background-color : var ( - - mm - primary - hover ) ;
border-color : var ( - - mm - primary - hover ) ;
}
. btn-outline-primary {
color : var ( - - mm - primary ) ;
border-color : var ( - - mm - primary ) ;
border-radius : var ( - - mm - radius - sm ) ;
}
. btn-outline-primary : hover {
background-color : var ( - - mm - primary ) ;
border-color : var ( - - mm - primary ) ;
color : #fff ;
}
. btn-outline-secondary {
color : var ( - - mm - text - secondary ) ;
border-color : var ( - - mm - border ) ;
border-radius : var ( - - mm - radius - sm ) ;
}
. btn-outline-secondary : hover {
background-color : var ( - - mm - bg ) ;
border-color : var ( - - mm - border ) ;
color : var ( - - mm - text ) ;
}
. btn-success {
background-color : var ( - - mm - success ) ;
border-color : var ( - - mm - success ) ;
border-radius : var ( - - mm - radius - sm ) ;
}
. btn-danger {
background-color : var ( - - mm - danger ) ;
border-color : var ( - - mm - danger ) ;
border-radius : var ( - - mm - radius - sm ) ;
}
/* --- Tables --- */
. table {
--bs-table-hover-bg : rgba ( 99 , 102 , 241 , 0.04 ) ;
--bs-table-striped-bg : rgba ( 0 , 0 , 0 , 0.015 ) ;
color : var ( - - mm - text ) ;
font-size : 0.9 rem ;
}
. table > thead > tr > th {
background-color : var ( - - mm - bg ) ;
color : var ( - - mm - text - secondary ) ;
font-weight : 600 ;
font-size : 0.8 rem ;
text-transform : uppercase ;
letter-spacing : 0.04 em ;
border-bottom : 2 px solid var ( - - mm - border ) ;
padding : 0.7 rem 0.75 rem ;
white-space : nowrap ;
}
. table > tbody > tr > td {
padding : 0.65 rem 0.75 rem ;
vertical-align : middle ;
border-bottom : 1 px solid rgba ( 0 , 0 , 0 , 0.04 ) ;
}
. table > tbody > tr : last-child > td {
border-bottom : none ;
}
. table-hover > tbody > tr {
transition : background-color 0.1 s ease ;
}
/* --- Forms --- */
. form-control , . form-select {
border-radius : var ( - - mm - radius - sm ) ;
border : 1 px solid var ( - - mm - border ) ;
font-size : 0.9 rem ;
padding : 0.5 rem 0.75 rem ;
}
. form-control : hover , . form-select : hover {
border-color : #cbd5e1 ;
}
. form-label {
color : var ( - - mm - text ) ;
font-weight : 600 ;
font-size : 0.875 rem ;
}
/* --- Badges --- */
. badge {
font-weight : 600 ;
font-size : 0.75 rem ;
border-radius : 6 px ;
padding : 0.3 em 0.6 em ;
}
. badge . bg-success {
background-color : var ( - - mm - success ) !important ;
}
. badge . bg-danger {
background-color : var ( - - mm - danger ) !important ;
}
. badge . bg-warning {
background-color : var ( - - mm - warning ) !important ;
}
. badge . bg-info {
background-color : var ( - - mm - info ) !important ;
}
. badge . bg-primary {
background-color : var ( - - mm - primary ) !important ;
}
. badge . bg-secondary {
background-color : #e2e8f0 !important ;
color : var ( - - mm - text - secondary ) !important ;
}
/* --- Progress bars --- */
. progress {
background-color : #e2e8f0 ;
border-radius : 999 px ;
overflow : hidden ;
}
. progress-bar {
border-radius : 999 px ;
font-size : 0.7 rem ;
font-weight : 600 ;
}
. progress-bar . bg-success { background-color : var ( - - mm - success ) !important ; }
. progress-bar . bg-warning { background-color : var ( - - mm - warning ) !important ; }
. progress-bar . bg-danger { background-color : var ( - - mm - danger ) !important ; }
/* --- Alerts --- */
. alert {
border-radius : var ( - - mm - radius - sm ) ;
font-size : 0.9 rem ;
}
. alert-success {
background-color : var ( - - mm - success - soft ) ;
border-color : rgba ( 16 , 185 , 129 , 0.2 ) ;
color : #065f46 ;
}
. alert-danger {
background-color : var ( - - mm - danger - soft ) ;
border-color : rgba ( 239 , 68 , 68 , 0.2 ) ;
color : #991b1b ;
}
. alert-info {
background-color : var ( - - mm - info - soft ) ;
border-color : rgba ( 6 , 182 , 212 , 0.2 ) ;
color : #155e75 ;
}
/* --- Modals --- */
. modal-content {
border-radius : var ( - - mm - radius ) ;
border : 1 px solid var ( - - mm - border ) ;
box-shadow : 0 8 px 30 px rgba ( 0 , 0 , 0 , 0.12 ) ;
}
. modal-header {
border-bottom : 1 px solid var ( - - mm - border ) ;
}
. modal-footer {
border-top : 1 px solid var ( - - mm - border ) ;
}
/* --- Footer --- */
. footer {
background-color : var ( - - mm - surface ) ;
border-top : 1 px solid var ( - - mm - border ) !important ;
padding : 1 rem 0 ;
font-size : 0.85 rem ;
color : var ( - - mm - text - secondary ) ;
}
/* --- Links --- */
a {
color : var ( - - mm - primary ) ;
}
a : hover {
color : var ( - - mm - primary - hover ) ;
}
. text-decoration-none . text-body : hover {
color : var ( - - mm - primary ) !important ;
}
/* --- Amount coloring --- */
. text-success { color : var ( - - mm - success ) !important ; }
. text-danger { color : var ( - - mm - danger ) !important ; }
/* --- Muted text --- */
. text-muted {
color : var ( - - mm - text - secondary ) !important ;
}
/* --- Pagination --- */
. page-link {
border-radius : var ( - - mm - radius - sm ) ;
border : 1 px solid var ( - - mm - border ) ;
color : var ( - - mm - text - secondary ) ;
font-size : 0.875 rem ;
margin : 0 2 px ;
}
. page-link : hover {
background-color : var ( - - mm - primary - soft ) ;
border-color : var ( - - mm - primary ) ;
color : var ( - - mm - primary ) ;
}
. page-item . active . page-link {
background-color : var ( - - mm - primary ) ;
border-color : var ( - - mm - primary ) ;
color : #fff ;
}
/* --- Selection bar (Transactions page) --- */
. alert . alert-info . sticky-top {
background-color : var ( - - mm - primary - soft ) ;
border-color : rgba ( 99 , 102 , 241 , 0.2 ) ;
color : var ( - - mm - primary ) ;
}
/* --- Headings --- */
h1 , h2 , h3 , h4 , h5 , h6 {
color : var ( - - mm - text ) ;
font-weight : 700 ;
letter-spacing : -0.02 em ;
}
/* --- Utility overrides for light theme --- */
. bg-primary . bg-opacity-25 {
background-color : var ( - - mm - primary - soft ) !important ;
}
. bg-warning . bg-opacity-25 {
background-color : var ( - - mm - warning - soft ) !important ;
}
. bg-info . bg-opacity-25 {
background-color : var ( - - mm - info - soft ) !important ;
}
. bg-success . bg-opacity-25 {
background-color : var ( - - mm - success - soft ) !important ;
}
. text-primary { color : var ( - - mm - primary ) !important ; }
. text-warning { color : var ( - - mm - warning ) !important ; }
. text-info { color : var ( - - mm - info ) !important ; }
/* --- Scrollbar (subtle for light theme) --- */
:: -webkit-scrollbar { width : 8 px ; height : 8 px ; }
:: -webkit-scrollbar-track { background : transparent ; }
:: -webkit-scrollbar-thumb {
background : #cbd5e1 ;
border-radius : 999 px ;
}
:: -webkit-scrollbar-thumb : hover { background : #94a3b8 ; }