monopyly 1.4.8__py3-none-any.whl → 1.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. monopyly/CHANGELOG.md +18 -0
  2. monopyly/__init__.py +2 -2
  3. monopyly/_version.py +14 -2
  4. monopyly/auth/actions.py +12 -0
  5. monopyly/auth/routes.py +30 -21
  6. monopyly/auth/tools.py +1 -2
  7. monopyly/cli/apps.py +1 -1
  8. monopyly/cli/launch.py +3 -0
  9. monopyly/common/forms/_forms.py +56 -2
  10. monopyly/common/forms/utils.py +1 -2
  11. monopyly/common/transactions.py +162 -0
  12. monopyly/core/routes.py +0 -6
  13. monopyly/credit/actions.py +29 -0
  14. monopyly/credit/forms.py +25 -0
  15. monopyly/credit/routes.py +115 -7
  16. monopyly/credit/transactions/_transactions.py +15 -0
  17. monopyly/credit/transactions/activity/__init__.py +3 -0
  18. monopyly/credit/transactions/activity/data.py +161 -0
  19. monopyly/credit/transactions/activity/parser.py +282 -0
  20. monopyly/credit/transactions/activity/reconciliation.py +456 -0
  21. monopyly/database/models.py +6 -0
  22. monopyly/static/css/style.css +1328 -270
  23. monopyly/static/img/icons/statement-pair.png +0 -0
  24. monopyly/static/img/icons/statement-thick.png +0 -0
  25. monopyly/static/img/icons/statement.png +0 -0
  26. monopyly/static/js/bind-tag-actions.js +1 -1
  27. monopyly/static/js/create-balance-chart.js +1 -1
  28. monopyly/static/js/create-category-chart.js +27 -0
  29. monopyly/static/js/define-filter.js +1 -1
  30. monopyly/static/js/expand-transaction.js +10 -0
  31. monopyly/static/js/highlight-discrepant-transactions.js +124 -0
  32. monopyly/static/js/modules/expand-transaction.js +12 -3
  33. monopyly/static/js/modules/form-suggestions.js +60 -0
  34. monopyly/static/js/modules/manage-overlays.js +1 -3
  35. monopyly/static/js/show-credit-activity-loader.js +29 -0
  36. monopyly/static/js/toggle-navigation.js +35 -0
  37. monopyly/static/js/update-card-status.js +1 -1
  38. monopyly/static/js/use-suggested-amount.js +11 -0
  39. monopyly/static/js/use-suggested-merchant.js +11 -0
  40. monopyly/templates/auth/change_password.html +21 -0
  41. monopyly/templates/auth/login.html +3 -1
  42. monopyly/templates/auth/register.html +17 -7
  43. monopyly/templates/banking/account_page.html +3 -1
  44. monopyly/templates/banking/account_summaries.html +1 -1
  45. monopyly/templates/banking/accounts_page.html +11 -15
  46. monopyly/templates/banking/transactions_table/expanded_row_content.html +18 -20
  47. monopyly/templates/common/transaction_form/subtransaction_subform.html +10 -1
  48. monopyly/templates/common/transactions_table/linked_bank_transaction.html +1 -1
  49. monopyly/templates/common/transactions_table/linked_credit_transaction.html +1 -1
  50. monopyly/templates/common/transactions_table/transaction_condensed.html +2 -2
  51. monopyly/templates/common/transactions_table/transaction_expanded.html +3 -3
  52. monopyly/templates/common/transactions_table/transactions.html +1 -1
  53. monopyly/templates/core/credits.html +10 -8
  54. monopyly/templates/core/index.html +10 -0
  55. monopyly/templates/core/profile.html +3 -3
  56. monopyly/templates/credit/statement_page.html +33 -0
  57. monopyly/templates/credit/statement_reconciliation/discrepant_records.html +25 -0
  58. monopyly/templates/credit/statement_reconciliation/statement_reconciliation_inquiry.html +23 -0
  59. monopyly/templates/credit/statement_reconciliation/statement_reconciliation_page.html +86 -0
  60. monopyly/templates/credit/statement_reconciliation/summary.html +45 -0
  61. monopyly/templates/credit/statement_reconciliation/unrecorded_activities.html +24 -0
  62. monopyly/templates/credit/statement_summary.html +2 -2
  63. monopyly/templates/credit/statements.html +1 -1
  64. monopyly/templates/credit/transaction_form/transaction_form.html +9 -1
  65. monopyly/templates/credit/transaction_form/transaction_form_page.html +2 -0
  66. monopyly/templates/credit/transaction_form/transaction_form_page_update.html +9 -0
  67. monopyly/templates/credit/transaction_submission_page.html +64 -63
  68. monopyly/templates/credit/transactions_table/expanded_row_content.html +18 -12
  69. monopyly/templates/layout.html +37 -29
  70. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/METADATA +8 -7
  71. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/RECORD +75 -58
  72. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/WHEEL +1 -1
  73. monopyly/static/img/icons/statement-pair.svg +0 -281
  74. monopyly/static/img/icons/statement.svg +0 -294
  75. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/entry_points.txt +0 -0
  76. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/licenses/COPYING +0 -0
  77. {monopyly-1.4.8.dist-info → monopyly-1.5.1.dist-info}/licenses/LICENSE +0 -0
@@ -11,6 +11,10 @@
11
11
  --masthead-height: 50px;
12
12
  --masthead-color: #2b2b2b;
13
13
  --border-gray: #dddddd;
14
+ --button-background-base: #fbfbfb;
15
+ --button-background: linear-gradient(#fbfbfb, #efefef);
16
+ --button-block-background-base: #eeeeee;
17
+ --button-block-background: linear-gradient(#eeeeee, #e6e6e6);
14
18
  }
15
19
 
16
20
  html {
@@ -46,6 +50,12 @@ form {
46
50
  width: 50%;
47
51
  margin: auto;
48
52
  }
53
+ @media screen and (max-width: 600px) {
54
+ /* Mobile layout */
55
+ form {
56
+ width: 90%;
57
+ }
58
+ }
49
59
 
50
60
  input {
51
61
  color: inherit;
@@ -74,6 +84,7 @@ pre code {
74
84
  margin: 5px 0;
75
85
  padding: 10px 20px;
76
86
  border: 1px solid #eeeeee;
87
+ overflow: auto;
77
88
  }
78
89
 
79
90
  code {
@@ -98,7 +109,7 @@ header#masthead {
98
109
  border-style: solid;
99
110
  border-color: var(--moneytree-leaves);
100
111
  background-color: var(--masthead-color);
101
- opacity: 0.9;
112
+ opacity: 0.95;
102
113
  }
103
114
 
104
115
  #masthead a {
@@ -112,12 +123,25 @@ header#masthead {
112
123
  margin: 0 auto;
113
124
  }
114
125
 
126
+ @media screen and (max-width: 600px) {
127
+ /* Mobile layout */
128
+ #masthead .container a {
129
+ z-index: 98; /* ensure the logo is on top of the header menu */
130
+ }
131
+ }
132
+
115
133
  .monopyly-logo {
116
134
  margin: 0;
117
135
  color: white;
118
136
  font-size: 1.7em;
119
137
  text-transform: uppercase;
120
138
  }
139
+ @media screen and (max-width: 600px) {
140
+ /* Mobile layout */
141
+ .monopyly-logo {
142
+ font-size: 1.2em;
143
+ }
144
+ }
121
145
 
122
146
  .monopyly-logo:hover {
123
147
  filter: brightness(0.95);
@@ -127,40 +151,165 @@ header#masthead {
127
151
  font-weight: normal;
128
152
  text-transform: none;
129
153
  }
154
+ @media screen and (max-width: 600px) {
155
+ /* Mobile layout */
156
+ .monopyly-logo .development-mode {
157
+ font-size: 0.6em;
158
+ }
159
+ }
130
160
 
131
161
 
132
162
  /*
133
163
  * Display navigation links inline
134
164
  */
135
- #nav-menu {
165
+ #header-menu {
166
+ display: flex;
167
+ flex-direction: column;
136
168
  margin-left: auto;
137
169
  }
170
+ @media screen and (max-width: 600px) {
171
+ /* Mobile layout */
172
+ #header-menu {
173
+ position: fixed;
174
+ top: 0;
175
+ width: 90%;
176
+ align-items: flex-end;
177
+ z-index: 97;
178
+ }
179
+ }
180
+
181
+ #header-menu a.toggle-button {
182
+ display: none;
183
+ align-items: center;
184
+ height: var(--masthead-height);
185
+ }
186
+ @media screen and (max-width: 600px) {
187
+ /* Mobile layout */
188
+ #header-menu a.toggle-button {
189
+ display: flex;
190
+ }
191
+ }
192
+
193
+ @media screen and (max-width: 600px) {
194
+ /* Mobile layout */
195
+ #header-menu ul.menu-links {
196
+ display: none;
197
+ flex-direction: column;
198
+ list-style-type: none;
199
+ width: min-content;
200
+ margin: 0;
201
+ padding: 0;
202
+ border-top: 3px solid var(--moneytree-leaves);
203
+ }
204
+ }
138
205
 
139
- #nav-menu li {
206
+ #header-menu li {
140
207
  display: inline;
141
208
  }
209
+ @media screen and (max-width: 600px) {
210
+ /* Mobile layout */
211
+ #header-menu li {
212
+ padding: 15px 25px;
213
+ border-bottom: 1px solid gray;
214
+ border-right: 2px solid gray;
215
+ border-left: 1px solid gray;
216
+ background-color: var(--masthead-color);
217
+ font-weight: bold;
218
+ white-space: nowrap;
219
+ letter-spacing: 0.25px;
220
+ }
221
+ #header-menu li:last-of-type {
222
+ padding-bottom: 15px;
223
+ border-bottom: 2px solid gray;
224
+ }
225
+ }
142
226
 
143
- #nav-menu li + li {
227
+ #header-menu li + li {
144
228
  margin-left: 35px;
145
229
  }
230
+ @media screen and (max-width: 600px) {
231
+ /* Mobile layout */
232
+ #header-menu li + li {
233
+ margin-left: 0;
234
+ }
235
+ }
146
236
 
147
- #nav-menu li a {
237
+ #header-menu li a {
148
238
  color: #bbbbbb;
149
239
  }
150
240
 
151
- #nav-menu li a:hover {
241
+ #header-menu li a:hover {
152
242
  color: #cdcdcd;
153
243
  }
154
244
 
155
- #nav-menu li .username {
245
+ #header-menu li .username {
156
246
  color: #777777;
157
247
  }
158
248
 
159
- #nav-menu li .username:hover {
249
+ #header-menu li .username:hover {
160
250
  color: var(--moneytree-leaves);
161
251
  }
162
252
 
163
253
 
254
+ /*
255
+ * Style the mobile icon for toggling the mobile header navigation menu
256
+ */
257
+ .mobile-menu {
258
+ display: none;
259
+ width: 50px;
260
+ user-select: none;
261
+ cursor: pointer;
262
+ transition: transform 300ms;
263
+ }
264
+ @media screen and (max-width: 600px) {
265
+ /* Mobile layout */
266
+ .mobile-menu {
267
+ display: block;
268
+ }
269
+ }
270
+
271
+ .mobile-menu-rotate.active {
272
+ transform: rotate(45deg);
273
+ }
274
+
275
+ .line {
276
+ fill: none;
277
+ transition: stroke-dasharray 300ms, stroke-dashoffset 300ms;
278
+ stroke: white;
279
+ stroke-width: 5.5;
280
+ stroke-linecap: round;
281
+ }
282
+
283
+ .mobile-menu .top {
284
+ stroke-dasharray: 40 160;
285
+ }
286
+
287
+ .mobile-menu .middle {
288
+ stroke-dasharray: 40 142;
289
+ transform-origin: 50%;
290
+ transition: transform 300ms;
291
+ }
292
+
293
+ .mobile-menu .bottom {
294
+ stroke-dasharray: 40 85;
295
+ transform-origin: 50%;
296
+ transition: transform 300ms, stroke-dashoffset 300ms;
297
+ }
298
+
299
+ .mobile-menu.active .top {
300
+ stroke-dashoffset: -64px;
301
+ }
302
+
303
+ .mobile-menu.active .middle {
304
+ //stroke-dashoffset: -20px;
305
+ transform: rotate(90deg);
306
+ }
307
+
308
+ .mobile-menu.active .bottom {
309
+ stroke-dashoffset: -64px;
310
+ }
311
+
312
+
164
313
  /*
165
314
  * Create a footer with site information
166
315
  */
@@ -173,6 +322,12 @@ footer#site-info {
173
322
  font-size: 9pt;
174
323
  text-align: center;
175
324
  }
325
+ @media screen and (max-width: 600px) {
326
+ /* Mobile layout */
327
+ #site-info p {
328
+ font-size: 8pt;
329
+ }
330
+ }
176
331
 
177
332
  #site-info span {
178
333
  padding: 0 5px;
@@ -193,6 +348,13 @@ footer#site-info {
193
348
  #page .container {
194
349
  width: 80%;
195
350
  }
351
+ @media screen and (max-width: 600px) {
352
+ /* Mobile layout */
353
+ #page .container {
354
+ width: 90%;
355
+ margin: auto;
356
+ }
357
+ }
196
358
 
197
359
  aside.sidebar {
198
360
  display: flex;
@@ -203,6 +365,12 @@ aside.sidebar {
203
365
  min-width: 50px;
204
366
  margin-top: 50px; /* account for content header */
205
367
  }
368
+ @media screen and (max-width: 600px) {
369
+ /* Mobile layout */
370
+ aside.sidebar {
371
+ display: none;
372
+ }
373
+ }
206
374
 
207
375
  #content-header h1 {
208
376
  height: 50px;
@@ -214,21 +382,73 @@ aside.sidebar {
214
382
  font-size: 2em;
215
383
  letter-spacing: -2px;
216
384
  }
385
+ @media screen and (max-width: 600px) {
386
+ /* Mobile layout */
387
+ #content-header h1 {
388
+ font-size: 1.8em;
389
+ }
390
+ }
217
391
 
218
- #content-header h1.error {
219
- text-align: left;
392
+
393
+ /*
394
+ * Provide styles for flashed messages
395
+ */
396
+ .flash.success,
397
+ .flash.warning,
398
+ .flash.error {
399
+ margin: 20px 0;
400
+ padding: 10px 20px;
401
+ border-radius: 10px;
402
+ box-shadow: 1px 1px 4px #ddd;
403
+ font-size: 0.9em;
404
+ }
405
+
406
+ .flash.success {
407
+ border: 1px solid #6fda6f;
408
+ background: linear-gradient(45deg, #e6efe1, #f5fef1);
409
+ }
410
+
411
+ .flash.warning {
412
+ border: 1px solid #dac96f;
413
+ background: linear-gradient(45deg, #efede1, #fefbf1);
414
+ }
415
+
416
+ .flash.error {
417
+ border: 1px solid #da6f6f;
418
+ background: linear-gradient(45deg, #f3e8e8, #fef1f1);
220
419
  }
221
420
 
222
421
 
223
422
  /*
224
423
  * Provide styles for error pages
225
424
  */
226
- .error span.code {
425
+ #content-header h1.error {
426
+ text-align: left;
427
+ }
428
+ @media screen and (max-width: 600px) {
429
+ /* Mobile layout */
430
+ #content-header h1.error {
431
+ height: 100px;
432
+ font-size: 2em;
433
+ }
434
+ }
435
+
436
+ #content-header h1.error span.code {
227
437
  margin-left: 30px;
228
438
  color: var(--silver-dollar);
229
439
  font-weight: 300;
230
440
  letter-spacing: 1px;
231
441
  }
442
+ @media screen and (max-width: 600px) {
443
+ /* Mobile layout */
444
+ #content-header h1.error span.code {
445
+ display: block;
446
+ height: 30px;
447
+ margin-top: 15px;
448
+ margin-left: 0;
449
+ font-size: 0.75em;
450
+ }
451
+ }
232
452
 
233
453
  .custom-error-content p {
234
454
  font-size: 18pt;
@@ -269,23 +489,14 @@ aside.sidebar {
269
489
  }
270
490
 
271
491
  .button-block {
272
- margin: 15px 0;
273
492
  border: 1px solid var(--border-gray);
274
493
  border-radius: 10px;
275
494
  box-shadow: 1px 1px 3px #bbbbbb;
276
- background-color: #eeeeee;
277
- background-image: linear-gradient(#eeeeee, #e6e6e6);
495
+ background-color: var(--button-block-background-base);
496
+ background-image: var(--button-block-background);
278
497
  color: inherit;
279
498
  }
280
499
 
281
- .button-block:first-of-type {
282
- margin-top: 0;
283
- }
284
-
285
- .button-block:last-of-type {
286
- margin-bottom: 0;
287
- }
288
-
289
500
  .button-block:hover {
290
501
  filter: brightness(0.98);
291
502
  text-decoration: none;
@@ -295,6 +506,13 @@ aside.sidebar {
295
506
  color: inherit;
296
507
  }
297
508
 
509
+ .highlight {
510
+ background-color: #fff9ee;
511
+ background-image: linear-gradient(135deg, #ffffff, 15%, #fff9ee, 85%, #ffffff);
512
+ color: sienna;
513
+ font-weight: 500;
514
+ }
515
+
298
516
  .screenshot {
299
517
  width: 100%; /* override the markdown default */
300
518
  margin: 20px 0;
@@ -303,10 +521,10 @@ aside.sidebar {
303
521
  }
304
522
 
305
523
  .group-stack {
306
- margin: 15px 10px 25px;
307
524
  padding: 20px 30px;
308
525
  border-radius: 15px;
309
526
  box-shadow: 0 0 20px #eeeeee;
527
+ box-sizing: border-box;
310
528
  background-color: #eef5eb;
311
529
  }
312
530
 
@@ -326,6 +544,12 @@ aside.sidebar {
326
544
  font-weight: 400;
327
545
  }
328
546
 
547
+ .group-stack .stack-buttons {
548
+ display: flex;
549
+ flex-direction: column;
550
+ gap: 15px;
551
+ }
552
+
329
553
  .paid-notice {
330
554
  color: var(--moneytree-leaves);
331
555
  font-weight: bold;
@@ -355,15 +579,16 @@ aside.sidebar {
355
579
  left: 0;
356
580
  height: 100%;
357
581
  width: 100%;
582
+ display: flex;
583
+ flex-direction: column;
584
+ justify-content: center;
585
+ align-items: center;
358
586
  background-color: rgba(0, 0, 0, 0.75);
359
- z-index: 10;
587
+ z-index: 50; /* in front of content, but behind the header */
360
588
  }
361
589
 
362
590
  .modal {
363
- position: relative;
364
- top: 0%;
365
- left: 50%;
366
- transform: translate(-50%, 15%);
591
+ min-width: 200px;
367
592
  }
368
593
 
369
594
  .modal-box {
@@ -378,25 +603,17 @@ aside.sidebar {
378
603
  /*
379
604
  * Style forms
380
605
  */
381
- form.transaction {
382
- min-width: 300px;
383
- }
384
-
385
606
  form .form-line {
386
607
  display: flex;
387
608
  justify-content: space-between;
609
+ flex-wrap: wrap;
610
+ column-gap: 5px;;
388
611
  }
389
612
 
390
613
  form .form-field {
391
- margin-left: 0;
392
614
  flex-grow: 1;
393
615
  }
394
616
 
395
- form .form-line .form-field ~ .form-field {
396
- /* Only set margin for fields other than the first on a line */
397
- margin-left: 5px;
398
- }
399
-
400
617
  form .add-info.buttons {
401
618
  margin: 20px 0;
402
619
  }
@@ -415,9 +632,15 @@ form .add-info.button {
415
632
 
416
633
  form label {
417
634
  display: block;
418
- padding: 10px 0;
635
+ margin: 15px 0 7.5px;
419
636
  font-size: 1.1em;
420
637
  }
638
+ @media screen and (max-width: 600px) {
639
+ /* Mobile layout */
640
+ form label {
641
+ font-size: 0.8em;
642
+ }
643
+ }
421
644
 
422
645
  form button,
423
646
  form input,
@@ -449,8 +672,8 @@ form input.button {
449
672
  align-items: center;
450
673
  margin-top: 20px;
451
674
  padding: 10px;
452
- background-color: #fbfbfb;
453
- background-image: linear-gradient(#fbfbfb, #efefef);
675
+ background-color: var(--button-background-base);
676
+ background-image: var(--button-background);
454
677
  color: #333333;
455
678
  font-weight:bold;
456
679
  text-align: center;
@@ -475,6 +698,13 @@ form button .icon {
475
698
  margin: 0 10px;
476
699
  filter: brightness(0.8);
477
700
  }
701
+ @media screen and (max-width: 600px) {
702
+ /* Mobile layout */
703
+ form button .icon {
704
+ height: 30px;
705
+ width: 30px;
706
+ }
707
+ }
478
708
 
479
709
  form button.dark-background .icon {
480
710
  filter: brightness(1.2);
@@ -513,9 +743,28 @@ form .subform .close.button {
513
743
  /*
514
744
  * Style transaction forms
515
745
  */
746
+ form.transaction {
747
+ min-width: 300px;
748
+ }
749
+
750
+ form.transaction div.form-suggestion {
751
+ margin: 5px 0 ;
752
+ color: #999999;
753
+ font-size: 11pt;
754
+ }
755
+
756
+ form.transaction div.form-suggestion .suggested-value {
757
+ font-weight: bold;
758
+ }
759
+
760
+ form.transaction div.form-suggestion .suggested-value:hover {
761
+ color: var(--moneytree-leaves);
762
+ cursor: pointer;
763
+ }
764
+
516
765
  form .subtotal-field {
517
766
  flex: 1;
518
- min-width: 100px;
767
+ min-width: 125px;
519
768
  }
520
769
 
521
770
  form .subtotal-field input.currency {
@@ -551,7 +800,7 @@ form .autocomplete-box {
551
800
  position: absolute;
552
801
  top: 98%;
553
802
  left: 0;
554
- z-index: 99;
803
+ z-index: 40; /* in front of most content, but behind the header */
555
804
  width: 100%;
556
805
  padding-right: 10px;
557
806
  border: 1px solid var(--silver-dollar);
@@ -594,7 +843,6 @@ form .autocomplete-box .item.active {
594
843
  .sidebar-menu div:first-of-type {
595
844
  margin-top: 5px;
596
845
  }
597
-
598
846
  .sidebar-menu div:last-of-type {
599
847
  margin-bottom: 5px;
600
848
  }
@@ -853,16 +1101,45 @@ form .autocomplete-box .item.active {
853
1101
  }
854
1102
 
855
1103
  .box-table .box-row {
1104
+ padding: 10px;
856
1105
  border-top: 0.5px solid var(--border-gray);
857
1106
  border-bottom: 0.5px solid var(--border-gray);
858
1107
  background-color: #f5f5f5;
859
1108
  }
1109
+ @media screen and (max-width: 600px) {
1110
+ /* Mobile layout */
1111
+ .box-table .box-row {
1112
+ font-size: 0.8em;
1113
+ }
1114
+ }
860
1115
 
861
- .box-table .box-row:hover {
1116
+ .box-table .box-row.action:hover {
862
1117
  cursor: pointer;
863
1118
  filter: brightness(0.98);
864
1119
  }
865
1120
 
1121
+ .box-table .box-header {
1122
+ margin: 0;
1123
+ padding: 10px;
1124
+ border-bottom: 2px solid var(--border-gray);
1125
+ }
1126
+ @media screen and (max-width: 600px) {
1127
+ /* Mobile layout */
1128
+ .box-table .box-header {
1129
+ font-size: 1.2em;
1130
+ }
1131
+ }
1132
+
1133
+ .group-stack .box-table .box-row {
1134
+ padding: 25px 30px;
1135
+ }
1136
+ @media screen and (max-width: 600px) {
1137
+ /* Mobile layout */
1138
+ .group-stack .box-table .box-row {
1139
+ padding: 15px 30px;
1140
+ }
1141
+ }
1142
+
866
1143
 
867
1144
  /*
868
1145
  * Style the card filter
@@ -870,12 +1147,13 @@ form .autocomplete-box .item.active {
870
1147
  #card-filter {
871
1148
  display: flex;
872
1149
  justify-content: center;
1150
+ flex-wrap: wrap;
1151
+ gap: 8px 4px;
873
1152
  margin-bottom: 20px;
874
1153
  }
875
1154
 
876
1155
  #card-filter .card {
877
1156
  position: relative;
878
- margin: 0 3px;
879
1157
  padding: 1px 10px;
880
1158
  border-radius: 10px;
881
1159
  background-color: #eeeeee;
@@ -1034,6 +1312,12 @@ form .autocomplete-box .item.active {
1034
1312
  color: #666666;
1035
1313
  font-size: 12pt;
1036
1314
  }
1315
+ @media screen and (max-width: 600px) {
1316
+ /* Mobile layout */
1317
+ .transaction .description {
1318
+ font-size: 11pt;
1319
+ }
1320
+ }
1037
1321
 
1038
1322
  .transaction .description-header {
1039
1323
  display: flex;
@@ -1066,9 +1350,25 @@ form .autocomplete-box .item.active {
1066
1350
 
1067
1351
  .transactions-table .row {
1068
1352
  display: flex;
1069
- height: 100%;
1070
- width: 100%;
1071
1353
  align-items: center;
1354
+ border-top: 0px solid var(--border-gray);
1355
+ border-bottom: 1px solid var(--border-gray);;
1356
+ }
1357
+
1358
+ .transactions-table .transaction.row {
1359
+ flex-direction: column;
1360
+ transition: border-bottom 0.2s ease,
1361
+ border-top 0.2s ease;
1362
+ }
1363
+
1364
+ .transactions-table .selected.transaction.row {
1365
+ /*Make top & bottom borders approximately the same size */
1366
+ border-top: 2px solid var(--border-gray);
1367
+ border-bottom: 3px solid var(--border-gray);
1368
+ }
1369
+
1370
+ .transactions-table .future.transaction.row {
1371
+ color: #aaaaaa;
1072
1372
  }
1073
1373
 
1074
1374
  /* Define a region with row content (separate from actions/buttons) */
@@ -1086,50 +1386,74 @@ form .autocomplete-box .item.active {
1086
1386
  box-sizing: border-box;
1087
1387
  margin: 0 10px;
1088
1388
  }
1089
-
1090
- .transactions-table .date.column {
1091
- flex: 1;
1092
- min-width: 100px;
1093
- text-align: center;
1389
+ .transactions-table .column:first-of-type {
1390
+ margin-left: 30px;
1094
1391
  }
1095
-
1096
- .transactions-table .merchant.column {
1097
- flex: 3;
1098
- min-width: 180px;
1392
+ @media screen and (max-width: 600px) {
1393
+ /* Mobile layout */
1394
+ .transactions-table .column {
1395
+ margin: 0 5px;
1396
+ }
1397
+ .transactions-table .column:first-of-type {
1398
+ margin-left: 20px;
1399
+ }
1099
1400
  }
1100
1401
 
1101
- .transactions-table .balance.column,
1102
- .transactions-table .amount.column {
1103
- flex: 1;
1104
- text-align: right;
1402
+ .transactions-table .text.column {
1105
1403
  white-space: nowrap;
1404
+ overflow: hidden;
1405
+ text-overflow: ellipsis;
1106
1406
  }
1107
1407
 
1108
- .transactions-table .amount.column {
1109
- min-width: 100px;
1408
+ .transactions-table .date.column {
1409
+ width: 80px;
1410
+ min-width: 80px;
1110
1411
  }
1111
1412
 
1112
- .transactions-table .balance.column {
1113
- min-width: 80px;
1413
+ .transactions-table .merchant.column {
1414
+ flex: 6;
1415
+ min-width: 180px;
1416
+ }
1417
+ @media screen and (max-width: 600px) {
1418
+ /* Mobile layout */
1419
+ .transactions-table .merchant.column {
1420
+ min-width: 100px;
1421
+ }
1114
1422
  }
1115
1423
 
1116
1424
  .transactions-table .notes.column {
1117
- flex: 4;
1118
- min-width: 175px;
1119
- white-space: nowrap;
1120
- overflow: hidden;
1425
+ flex: 9;
1426
+ min-width: 100px;
1121
1427
  }
1122
- @media screen and (max-width: 1000px) {
1428
+ @media screen and (max-width: 600px) {
1123
1429
  /* Mobile layout */
1124
1430
  .transactions-table .notes.column {
1125
1431
  display: none;
1126
1432
  }
1127
1433
  }
1128
1434
 
1129
- .transactions-table .notes.column:hover {
1130
- overflow: auto;
1435
+
1436
+ .transactions-table .amount.column {
1437
+ flex: 3;
1438
+ min-width: 80px;
1439
+ }
1440
+ @media screen and (max-width: 600px) {
1441
+ /* Mobile layout */
1442
+ .transactions-table .amount.column {
1443
+ min-width: 80px;
1444
+ }
1445
+ }
1446
+
1447
+ .transactions-table .balance.column {
1448
+ flex: 1;
1449
+ min-width: 80px;
1131
1450
  }
1132
1451
 
1452
+ .transactions-table .balance.column,
1453
+ .transactions-table .amount.column {
1454
+ text-align: right;
1455
+ white-space: nowrap;
1456
+ }
1133
1457
 
1134
1458
  .transactions-table .card.column {
1135
1459
  flex: 1;
@@ -1143,16 +1467,21 @@ form .autocomplete-box .item.active {
1143
1467
  margin-left: auto;
1144
1468
  }
1145
1469
  }
1146
-
1147
- .transactions-table .buttons.column {
1148
- min-width: 40px;
1149
- margin: 0 0 0 20px;
1150
- padding: 5px 10px;
1470
+ @media screen and (max-width: 600px) {
1471
+ /* Mobile layout */
1472
+ .transactions-table .card.column {
1473
+ display: none;
1474
+ }
1151
1475
  }
1152
1476
 
1153
- .transactions-table .titles,
1154
- .transactions-table .transaction {
1155
- border-bottom: 1px solid var(--border-gray);
1477
+ .transactions-table .buttons.column {
1478
+ width: 20px;
1479
+ }
1480
+ @media screen and (max-width: 600px) {
1481
+ /* Mobile layout */
1482
+ .transactions-table .buttons.column {
1483
+ display: none;
1484
+ }
1156
1485
  }
1157
1486
 
1158
1487
  .transactions-table .titles {
@@ -1171,36 +1500,21 @@ form .autocomplete-box .item.active {
1171
1500
  display: inline;
1172
1501
  }
1173
1502
 
1174
- .transactions-table .transaction {
1175
- display: flex;
1176
- flex-direction: column;
1177
- width: 100%;
1178
- transition: border 0.2s ease;
1179
- }
1180
-
1181
- .transactions-table .transaction.future {
1182
- color: #aaaaaa;
1183
- }
1184
-
1185
- .transactions-table .transaction .condensed {
1186
- height: 25px;
1187
- transition: background-color 0.1s ease;
1188
- }
1189
-
1190
- .transactions-table .transaction .condensed:hover {
1191
- background-color: #fafafa;
1192
- }
1193
-
1194
1503
  .transactions-table .transaction .buttons {
1195
1504
  display: flex;
1196
1505
  flex-direction: column;
1197
1506
  visibility: hidden;
1198
1507
  }
1199
-
1200
1508
  .transactions-table .transaction:hover .buttons {
1201
- z-index: 99;
1509
+ z-index: 10;
1202
1510
  visibility: visible;
1203
1511
  }
1512
+ @media screen and (max-width: 600px) {
1513
+ /* Mobile layout */
1514
+ .transactions-table .transaction .buttons {
1515
+ display: none;
1516
+ }
1517
+ }
1204
1518
 
1205
1519
  .transactions-table .transaction .button {
1206
1520
  height: 20px;
@@ -1225,138 +1539,175 @@ form .autocomplete-box .item.active {
1225
1539
  }
1226
1540
  }
1227
1541
 
1228
- .transactions-table .selected.transaction {
1229
- /*Make top & bottom borders approximately the same size */
1230
- border-width: 3px;
1231
- border-top: 2px solid #eeeeee;
1542
+ .transactions-table .transaction .transaction-info {
1543
+ display: flex;
1544
+ flex-grow: 1;
1545
+ min-width: 0; /* allow the info (columns) to collapse */
1546
+ }
1547
+
1548
+ .transactions-table .transaction .condensed {
1549
+ height: 25px;
1550
+ width: 100%;
1551
+ transition: background-color 0.1s ease;
1552
+ }
1553
+ @media screen and (max-width: 600px) {
1554
+ /* Mobile layout */
1555
+ .transactions-table .transaction .condensed {
1556
+ height: 30px;
1557
+ }
1558
+ }
1559
+
1560
+ .transactions-table .transaction .condensed:hover {
1561
+ background-color: #fafafa;
1232
1562
  }
1233
1563
 
1234
1564
  .transactions-table .transaction .expanded {
1235
1565
  display: none;
1566
+ width: 100%;
1236
1567
  opacity: 0;
1237
1568
  }
1569
+ @media screen and (max-width: 600px) {
1570
+ /* Mobile layout */
1571
+ .transactions-table .transaction .expanded {
1572
+ margin: 5px 0 5px 0;
1573
+ }
1574
+ }
1238
1575
 
1239
- .transactions-table .transaction .expanded .row {
1240
- align-items: flex-start;
1576
+ .transactions-table .transaction .expanded .row-content {
1577
+ margin: 5px 0;
1241
1578
  }
1242
1579
 
1243
- .transactions-table .expanded .row-content {
1244
- align-items: flex-start;
1245
- margin: 20px 0;
1580
+ .transactions-table .transaction .expanded .transaction-info {
1581
+ margin: 10px 0;
1582
+ }
1583
+
1584
+ .transactions-table .transaction .expanded .setting {
1585
+ display: flex;
1586
+ flex: 15;
1246
1587
  }
1247
1588
  @media screen and (max-width: 1000px) {
1248
- .transactions-table .expanded .row-content {
1249
- margin-left: 28px;
1589
+ .transactions-table .transaction .expanded .setting {
1590
+ flex-direction: column
1250
1591
  }
1251
1592
  }
1252
1593
 
1594
+ .transactions-table .transaction .expanded .setting.column {
1595
+ margin: 0;
1596
+ }
1253
1597
  @media screen and (max-width: 1000px) {
1254
- .transactions-table .expanded .date.column {
1255
- margin: 0;
1598
+ .transactions-table .transaction .expanded .setting.column {
1599
+ margin: 0 10px 0 30px; /* revert to behaving like a normal column */
1600
+ }
1601
+ }
1602
+ @media screen and (max-width: 600px) {
1603
+ /* Mobile layout */
1604
+ .transactions-table .transaction .expanded .setting.column {
1605
+ margin-left: 20px; /* revert to behaving like a normal column */
1256
1606
  }
1257
1607
  }
1258
1608
 
1259
- .transactions-table .expanded .setting {
1260
- display: flex;
1261
- flex: 3;
1609
+ .transactions-table .transaction .expanded .date.column {
1610
+ font-weight: bold;
1262
1611
  }
1263
1612
  @media screen and (max-width: 1000px) {
1264
- /* Mobile layout */
1265
- .transactions-table .expanded .setting {
1266
- flex-direction: column;
1267
- align-items: flex-start;
1268
- flex: 9;
1613
+ .transactions-table .transaction .expanded .date.column {
1614
+ margin-left: 0;
1615
+ margin-bottom: 5px;
1269
1616
  }
1270
1617
  }
1271
1618
 
1272
- .transactions-table .expanded .setting .date {
1619
+ .transactions-table .transaction .expanded .stacked-date {
1273
1620
  display: flex;
1274
1621
  flex-direction: column;
1275
1622
  justify-content: center;
1276
1623
  align-items: center;
1277
- flex: 2;
1278
- padding-top: 3px;
1624
+ width: min-content;
1625
+ margin-left: 5px;
1279
1626
  font-weight: bold;
1280
1627
  }
1281
1628
  @media screen and (max-width: 1000px) {
1282
- /* Mobile layout */
1283
- .transactions-table .expanded .setting .date {
1284
- align-items: flex-start;
1629
+ .transactions-table .transaction .expanded .stacked-date {
1630
+ margin-left: 0;
1285
1631
  }
1286
1632
  }
1287
1633
 
1288
1634
  @media screen and (max-width: 1000px) {
1289
- /* Mobile layout */
1290
- .transactions-table .expanded .setting .date .month,
1291
- .transactions-table .expanded .setting .date .day,
1292
- .transactions-table .expanded .setting .date .year {
1635
+ .transactions-table .transaction .expanded .date .month,
1636
+ .transactions-table .transaction .expanded .date .day,
1637
+ .transactions-table .transaction .expanded .date .year {
1293
1638
  display: none;
1294
1639
  }
1295
1640
  }
1296
1641
 
1297
- .transactions-table .expanded .setting .date .month {
1642
+ .transactions-table .transaction .expanded .date .month {
1298
1643
  margin-bottom: -10px;
1299
1644
  font-size: 18pt;
1300
1645
  }
1301
1646
 
1302
- .transactions-table .expanded .setting .date .day {
1647
+ .transactions-table .transaction .expanded .date .day {
1303
1648
  font-size: 36pt;
1304
1649
  }
1305
1650
 
1306
- .transactions-table .expanded .setting .date .year {
1651
+ .transactions-table .transaction .expanded .date .year {
1307
1652
  margin-top: -10px;
1308
1653
  font-size: 14pt;
1309
1654
  letter-spacing: 3px;
1310
1655
  }
1311
1656
 
1312
- .transactions-table .expanded .setting .date .full {
1657
+ .transactions-table .transaction .expanded .date .full-date {
1313
1658
  display: none;
1314
1659
  color: #aaaaaa;
1315
1660
  font-size: 1.1em;
1316
1661
  }
1317
1662
  @media screen and (max-width: 1000px) {
1318
- /* Mobile layout */
1319
- .transactions-table .expanded .setting .date .full {
1663
+ .transactions-table .transaction .expanded .date .full-date {
1320
1664
  display: block;
1321
1665
  }
1322
1666
  }
1323
1667
 
1324
- .transactions-table .expanded .setting .description {
1325
- flex: 13;
1326
- min-width: 250px;
1668
+ .transactions-table .transaction .expanded .description {
1669
+ display: flex;
1670
+ flex-direction: column;
1671
+ flex: 1;
1672
+ min-width: 200px;
1327
1673
  }
1674
+
1328
1675
  @media screen and (max-width: 1000px) {
1329
- /* Mobile layout */
1330
- .transactions-table .expanded .setting .description {
1331
- width: 95%;
1332
- margin-top: 5px;
1676
+ .transactions-table .transaction .expanded .description.column {
1677
+ margin: 0;
1333
1678
  }
1334
1679
  }
1335
1680
 
1336
- .transactions-table .transaction .expanded .setting .description-header {
1681
+ .transactions-table .transaction .expanded .description .description-header {
1337
1682
  transition: font-size 0.3s;
1338
1683
  }
1339
1684
  @media screen and (max-width: 1200px) {
1340
1685
  /* Statement disappear */
1341
- .transactions-table .transaction .expanded .setting .description-header {
1686
+ .transactions-table .transaction .expanded .description .description-header {
1342
1687
  font-size: 22pt;
1343
1688
  }
1344
1689
  }
1345
1690
  @media screen and (max-width: 1050px) {
1346
- /* Disable transitions for mobile switch */
1347
- .transactions-table .transaction .expanded .setting .description-header {
1691
+ /* Disable transitions for reduced view */
1692
+ .transactions-table .transaction .expanded .description .description-header {
1348
1693
  transition: all 0s;
1349
1694
  }
1350
1695
  }
1351
1696
  @media screen and (max-width: 1000px) {
1352
- /* Mobile layout */
1353
- .transactions-table .transaction .expanded .setting .description-header {
1697
+ /* Condensed layout */
1698
+ .transactions-table .transaction .expanded .description .description-header {
1354
1699
  font-size: 20pt;
1355
1700
  }
1356
1701
  }
1702
+ @media screen and (max-width: 600px) {
1703
+ /* Mobile layout */
1704
+ .transactions-table .transaction .expanded .description .description-header {
1705
+ font-size: 14pt;
1706
+ }
1707
+ }
1357
1708
 
1358
- .transactions-table .transaction .expanded .setting .description-header .merchant,
1359
- .transactions-table .transaction .expanded .setting .description-header .brief {
1709
+ .transactions-table .transaction .expanded .description .description-header .merchant,
1710
+ .transactions-table .transaction .expanded .description .description-header .brief {
1360
1711
  flex: 4;
1361
1712
  box-sizing: border-box;
1362
1713
  padding-right: 10px;
@@ -1373,6 +1724,12 @@ form .autocomplete-box .item.active {
1373
1724
  flex: 4;
1374
1725
  padding-right: 10px;
1375
1726
  }
1727
+ @media screen and (max-width: 600px) {
1728
+ /* Mobile layout */
1729
+ .transactions-table .transaction .expanded .setting .subtransaction-details .notes {
1730
+ padding-right: 15px;
1731
+ }
1732
+ }
1376
1733
 
1377
1734
  .transactions-table .transaction .expanded .setting .subtransaction-details .subtotal {
1378
1735
  flex: 1;
@@ -1405,9 +1762,8 @@ form .autocomplete-box .item.active {
1405
1762
  display: flex;
1406
1763
  justify-content: space-between;
1407
1764
  align-items: flex-start;
1408
- flex: 1;
1765
+ flex: 5;
1409
1766
  height: 100%;
1410
- padding-right: 10px;
1411
1767
  }
1412
1768
  @media screen and (max-width: 1200px) {
1413
1769
  /* Statement disappear */
@@ -1416,7 +1772,7 @@ form .autocomplete-box .item.active {
1416
1772
  }
1417
1773
  }
1418
1774
  @media screen and (max-width: 1000px) {
1419
- /* Mobile layout */
1775
+ /* Condensed layout */
1420
1776
  .transactions-table .transaction .expanded .payment {
1421
1777
  flex-direction: column;
1422
1778
  justify-content: center;
@@ -1425,6 +1781,12 @@ form .autocomplete-box .item.active {
1425
1781
  margin-top: 15px;
1426
1782
  }
1427
1783
  }
1784
+ @media screen and (max-width: 600px) {
1785
+ /* Mobile layout */
1786
+ .transactions-table .transaction .expanded .payment {
1787
+ margin-top: 30px;
1788
+ }
1789
+ }
1428
1790
 
1429
1791
  .transactions-table .transaction .expanded .payment .statement {
1430
1792
  position: relative;
@@ -1510,11 +1872,17 @@ form .autocomplete-box .item.active {
1510
1872
  }
1511
1873
  }
1512
1874
  @media screen and (max-width: 1000px) {
1513
- /* Mobile layout */
1875
+ /* Condensed layout */
1514
1876
  .transactions-table .transaction .expanded .payment .card {
1515
1877
  height: 50px;
1516
1878
  }
1517
1879
  }
1880
+ @media screen and (max-width: 600px) {
1881
+ /* Mobile layout */
1882
+ .transactions-table .transaction .expanded .payment .card {
1883
+ height: 30px;
1884
+ }
1885
+ }
1518
1886
 
1519
1887
  .transactions-table .transaction .expanded .payment .card .card-background {
1520
1888
  height: 100%;
@@ -1547,7 +1915,7 @@ form .autocomplete-box .item.active {
1547
1915
  }
1548
1916
  }
1549
1917
  @media screen and (max-width: 1000px) {
1550
- /* Mobile layout */
1918
+ /* Condensed layout */
1551
1919
  .transactions-table .transaction .expanded .payment .card-number {
1552
1920
  font-size: 0.5em;
1553
1921
  }
@@ -1559,15 +1927,24 @@ form .autocomplete-box .item.active {
1559
1927
  justify-content: space-between;
1560
1928
  align-self: flex-start;
1561
1929
  }
1930
+ @media screen and (max-width: 600px) {
1931
+ /* Mobile layout */
1932
+ .transactions-table .transaction .expanded .buttons {
1933
+ margin-left: 10px;
1934
+ z-index: 10;
1935
+ visibility: visible;
1936
+ }
1937
+ }
1562
1938
 
1563
1939
  .transactions-table .transaction .expanded .buttons a.button {
1564
1940
  margin: 3px 0;
1565
1941
  }
1566
1942
 
1943
+
1567
1944
  /*
1568
1945
  * Style linked transaction overlays
1569
1946
  */
1570
- #linked-transaction-display {
1947
+ #linked-transaction-display.modal {
1571
1948
  display: flex;
1572
1949
  flex-direction: column;
1573
1950
  align-items: center;
@@ -1575,13 +1952,13 @@ form .autocomplete-box .item.active {
1575
1952
  height: 80%;
1576
1953
  }
1577
1954
 
1578
- #linked-transaction-display #link {
1955
+ #linked-transaction-display.modal #link {
1579
1956
  width: 50px;
1580
1957
  height: 50px;
1581
1958
  background-size: 50px 50px;
1582
1959
  }
1583
1960
 
1584
- #linked-transaction-display .buttons {
1961
+ #linked-transaction-display.modal .buttons {
1585
1962
  display: flex;
1586
1963
  justify-content: flex-end;
1587
1964
  align-items: center;
@@ -1589,12 +1966,12 @@ form .autocomplete-box .item.active {
1589
1966
  width: 100%;
1590
1967
  }
1591
1968
 
1592
- #linked-transaction-display .button {
1969
+ #linked-transaction-display.modal .buttons .button {
1593
1970
  height: 40px;
1594
1971
  width: 40px;
1595
1972
  }
1596
1973
 
1597
- #linked-transaction-display .linked-transaction {
1974
+ #linked-transaction-display.modal .linked-transaction {
1598
1975
  display: flex;
1599
1976
  flex-direction: column;
1600
1977
  width: 100%;
@@ -1602,11 +1979,11 @@ form .autocomplete-box .item.active {
1602
1979
  padding: 20px 40px;
1603
1980
  }
1604
1981
 
1605
- #linked-transaction-display .linked-transaction.selected {
1982
+ #linked-transaction-display.modal. linked-transaction.selected {
1606
1983
  border: 5px solid var(--moneytree-leaves);
1607
1984
  }
1608
1985
 
1609
- #linked-transaction-display .linked-transaction .date {
1986
+ #linked-transaction-display.modal .linked-transaction .date {
1610
1987
  margin-bottom: 20px;
1611
1988
  color: #888888;
1612
1989
  font-size: 14pt;
@@ -1615,45 +1992,45 @@ form .autocomplete-box .item.active {
1615
1992
  text-align: right;
1616
1993
  }
1617
1994
 
1618
- #linked-transaction-display .linked-transaction .description-header {
1995
+ #linked-transaction-display.modal .linked-transaction .description-header {
1619
1996
  display: flex;
1620
1997
  }
1621
1998
 
1622
- #linked-transaction-display .linked-transaction .description-header .account {
1999
+ #linked-transaction-display.modal .linked-transaction .description-header .account {
1623
2000
  flex: 4;
1624
2001
  padding-right: 10px;
1625
2002
  font-size: 20pt;
1626
2003
  }
1627
2004
 
1628
- #linked-transaction-display .linked-transaction .description-header .account-type {
2005
+ #linked-transaction-display.modal .linked-transaction .description-header .account-type {
1629
2006
  color: #888888;
1630
2007
  font-size: 16pt;
1631
2008
  font-weight: bold;
1632
2009
  text-transform: uppercase;
1633
2010
  }
1634
2011
 
1635
- #linked-transaction-display .linked-transaction .description-header .total {
2012
+ #linked-transaction-display.modal .linked-transaction .description-header .total {
1636
2013
  flex: 1;
1637
2014
  margin-top: auto;
1638
2015
  font-size: 20pt;
1639
2016
  font-weight: bold;
1640
2017
  }
1641
2018
 
1642
- #linked-transaction-display .linked-transaction .notes {
2019
+ #linked-transaction-display.modal .linked-transaction .notes {
1643
2020
  font-size: 12pt;
1644
2021
  }
1645
2022
 
1646
- #linked-transaction-display .linked-transaction .buttons {
2023
+ #linked-transaction-display.modal .linked-transaction .buttons {
1647
2024
  display: flex;
1648
2025
  justify-content: flex-end;
1649
2026
  visibility: hidden;
1650
2027
  }
1651
2028
 
1652
- #linked-transaction-display .linked-transaction:hover .buttons {
2029
+ #linked-transaction-display.modal .linked-transaction:hover .buttons {
1653
2030
  visibility: visible;
1654
2031
  }
1655
2032
 
1656
- #linked-transaction-display .linked-transaction .button {
2033
+ #linked-transaction-display.modal .linked-transaction .button {
1657
2034
  height: 20px;
1658
2035
  width: 20px;
1659
2036
  margin: 0 5px;
@@ -1706,6 +2083,13 @@ form .autocomplete-box .item.active {
1706
2083
  min-width: 500px;
1707
2084
  margin: 0 0 0 0;
1708
2085
  }
2086
+ @media screen and (max-width: 600px) {
2087
+ /* Mobile layout */
2088
+ .details .summary-container {
2089
+ width: 100%;
2090
+ min-width: 250px;
2091
+ }
2092
+ }
1709
2093
 
1710
2094
  .details .summary-box {
1711
2095
  display: flex;
@@ -1717,10 +2101,18 @@ form .autocomplete-box .item.active {
1717
2101
  box-shadow: 1px 1px 5px #dddddd;
1718
2102
  background-color: #f8f8f8;
1719
2103
  }
2104
+ @media screen and (max-width: 600px) {
2105
+ /* Mobile layout */
2106
+ .details .summary-box {
2107
+ width: 80%;
2108
+ padding: 20px 25px 30px;
2109
+ }
2110
+ }
1720
2111
 
1721
2112
  .details .summary-box .balance {
1722
2113
  display: flex;
1723
2114
  justify-content: space-between;
2115
+ width: 100%;
1724
2116
  margin: 20px 0;
1725
2117
  font-size: 72pt;
1726
2118
  font-weight: bold;
@@ -1728,6 +2120,10 @@ form .autocomplete-box .item.active {
1728
2120
  text-align: center;
1729
2121
  }
1730
2122
 
2123
+ .details .summary-box .balance svg {
2124
+ width: 100%;
2125
+ }
2126
+
1731
2127
  .details .summary-box .projected-balance .amount {
1732
2128
  color: var(--moneytree);
1733
2129
  font-weight: 500;
@@ -1740,6 +2136,12 @@ form .autocomplete-box .item.active {
1740
2136
  .details .summary-box .title {
1741
2137
  font-size: 28pt;
1742
2138
  }
2139
+ @media screen and (max-width: 600px) {
2140
+ /* Mobile layout */
2141
+ .details .summary-box .title {
2142
+ font-size: 20pt;
2143
+ }
2144
+ }
1743
2145
 
1744
2146
  .details .summary-box .suptitle,
1745
2147
  .details .summary-box .subtitle {
@@ -1750,7 +2152,7 @@ form .autocomplete-box .item.active {
1750
2152
 
1751
2153
  .details .summary-box .suptitle {
1752
2154
  margin-bottom: 10px;
1753
- font-size: 14pt;
2155
+ font-size: 12pt;
1754
2156
  }
1755
2157
 
1756
2158
  .details .summary-box .subtitle {
@@ -1769,19 +2171,21 @@ form .autocomplete-box .item.active {
1769
2171
  margin-top: 50px;
1770
2172
  }
1771
2173
  }
2174
+ @media screen and (max-width: 600px) {
2175
+ /* Mobile layout */
2176
+ .details .transactions-container {
2177
+ width: 90%;
2178
+ min-width: 200px;
2179
+ }
2180
+ }
1772
2181
 
1773
2182
  .details .transactions-table {
1774
2183
  width: 100%;
1775
2184
  min-width: inherit;
1776
2185
  }
1777
2186
 
1778
- .details .transactions-table .date.column {
1779
- flex: 1;
1780
- }
1781
-
1782
2187
  .details .transactions-table .merchant.column {
1783
2188
  flex: 4;
1784
- min-width: 150px;
1785
2189
  }
1786
2190
 
1787
2191
  .details .transactions-table .amount.column {
@@ -1789,98 +2193,112 @@ form .autocomplete-box .item.active {
1789
2193
  margin-left: auto;
1790
2194
  }
1791
2195
 
1792
- .details .transactions-table .notes.column {
1793
- flex: 4;
1794
- min-width: 100px;
2196
+ .details .transactions-table .transaction .expanded .setting {
2197
+ flex: 1;
1795
2198
  }
1796
-
1797
2199
  @media screen and (max-width: 1500px) {
1798
- .details .transactions-table .expanded .row-content {
1799
- margin-left: 28px;
2200
+ /* Condensed layout */
2201
+ .details .transactions-table .transaction .expanded .setting {
2202
+ flex-direction: column;
2203
+ align-items: flex-start;
1800
2204
  }
1801
2205
  }
1802
2206
 
1803
2207
  @media screen and (max-width: 1500px) {
1804
- .details .transactions-table .expanded .date.column {
1805
- margin: 0;
2208
+ .details .transactions-table .transaction .expanded .setting.column {
2209
+ margin: 0 10px 0 30px; /* revert to behaving like a normal column */
1806
2210
  }
1807
2211
  }
1808
-
1809
- .details .transactions-table .expanded .setting {
1810
- width: 100%;
2212
+ @media screen and (max-width: 600px) {
2213
+ /* Mobile layout */
2214
+ .details .transactions-table .transaction .expanded .setting.column {
2215
+ margin-left: 20px; /* revert to behaving like a normal column */
2216
+ }
1811
2217
  }
2218
+
1812
2219
  @media screen and (max-width: 1500px) {
1813
- /* Mobile layout */
1814
- .details .transactions-table .expanded .setting {
1815
- flex-direction: column;
2220
+ /* Condensed layout */
2221
+ .details .transactions-table .transaction .expanded .date {
1816
2222
  align-items: flex-start;
1817
2223
  }
1818
2224
  }
1819
2225
 
1820
2226
  @media screen and (max-width: 1500px) {
1821
- /* Mobile layout */
1822
- .details .transactions-table .expanded .setting .date {
1823
- align-items: flex-start;
2227
+ /* Condensed layout */
2228
+ .details .transactions-table .transaction .expanded .date.column {
2229
+ margin-left: 0;
2230
+ margin-bottom: 5px;
1824
2231
  }
1825
2232
  }
1826
2233
 
1827
2234
  @media screen and (max-width: 1500px) {
1828
- .details .transactions-table .expanded .setting .date .month,
1829
- .details .transactions-table .expanded .setting .date .day,
1830
- .details .transactions-table .expanded .setting .date .year {
2235
+ /* Condensed layout */
2236
+ .details .transactions-table .transaction .expanded .setting .date .month,
2237
+ .details .transactions-table .transaction .expanded .setting .date .day,
2238
+ .details .transactions-table .transaction .expanded .setting .date .year {
1831
2239
  display: none;
1832
2240
  }
1833
2241
  }
1834
2242
 
1835
2243
  @media screen and (max-width: 1500px) {
1836
- /* Mobile layout */
1837
- .details .transactions-table .expanded .setting .date .full {
2244
+ /* Condensed layout */
2245
+ .details .transactions-table .transaction .expanded .date .full-date {
1838
2246
  display: block;
1839
2247
  }
1840
2248
  }
1841
2249
 
1842
2250
  @media screen and (max-width: 1500px) {
1843
- /* Mobile layout */
1844
- .details .transactions-table .expanded .setting .description {
2251
+ /* Condensed layout */
2252
+ .details .transactions-table .transaction .expanded .description.column {
1845
2253
  width: 100%;
1846
- margin-top: 5px;
2254
+ margin: 0;
1847
2255
  }
1848
2256
  }
1849
2257
 
1850
2258
  @media screen and (max-width: 1800px) {
1851
2259
  /* Statement disappear */
1852
- .details .transactions-table .expanded .setting .description-header {
2260
+ .details .transactions-table .transaction .expanded .description .description-header {
1853
2261
  font-size: 22pt;
1854
2262
  }
1855
2263
  }
1856
2264
  @media screen and (max-width: 1550px) {
1857
2265
  /* Disable transitions for mobile switch */
1858
- .details .transactions-table .expanded .setting .description-header {
2266
+ .details .transactions-table .transaction .expanded .description .description-header {
1859
2267
  transition: all 0s;
1860
2268
  }
1861
2269
  }
1862
2270
  @media screen and (max-width: 1500px) {
1863
- /* Statement disappear */
1864
- .details .transactions-table .expanded .setting .description-header {
2271
+ /* Condensed layout (statement disappear) */
2272
+ .details .transactions-table .transaction .expanded .description .description-header {
1865
2273
  font-size: 20pt;
1866
2274
  }
1867
2275
  }
2276
+ @media screen and (max-width: 600px) {
2277
+ /* Mobile layout */
2278
+ .details .transactions-table .transaction .expanded .description .description-header {
2279
+ font-size: 14pt;
2280
+ }
2281
+ }
1868
2282
 
1869
- .details .transactions-table .expanded .payment {
1870
- flex: 0;
1871
- padding: 0;
2283
+ @media screen and (max-width: 600px) {
2284
+ /* Mobile layout */
2285
+ .details .transactions-table .transaction .expanded .description .description-header .transaction-type {
2286
+ display: block;
2287
+ }
1872
2288
  }
1873
2289
 
1874
- .details .transactions-table .expanded .buttons {
1875
- height: 60%;
2290
+ .details .transactions-table .transaction .expanded .payment {
2291
+ flex: 0;
2292
+ margin: 0;
1876
2293
  }
1877
2294
 
2295
+
1878
2296
  /*
1879
2297
  * Customization for the 'Home' page
1880
2298
  */
1881
2299
  #homepage-block {
1882
2300
  margin-bottom: 20px;
1883
- padding: 0 0 30px 0;
2301
+ padding: 10px 10px 25px;
1884
2302
  background-color: gainsboro;
1885
2303
  border: 1px solid lightgray;
1886
2304
  border-radius: 6px;
@@ -1888,44 +2306,94 @@ form .autocomplete-box .item.active {
1888
2306
  }
1889
2307
 
1890
2308
  #homepage-block h2 {
1891
- margin: 0 0;
2309
+ margin: 10px 0;
1892
2310
  font-size: 3em;
1893
2311
  letter-spacing: -2px;
1894
2312
  text-align: center;
1895
2313
  }
2314
+ @media screen and (max-width: 600px) {
2315
+ /* Mobile layout */
2316
+ #homepage-block h2 {
2317
+ font-size: 2em;
2318
+ }
2319
+ }
1896
2320
 
1897
2321
  #homepage-block h3 {
1898
2322
  margin: 25px 0;
2323
+ padding: 0 20px;
1899
2324
  color: #777777;
1900
2325
  font-size: 1.7em;
1901
2326
  font-weight: 100;
1902
2327
  letter-spacing: 0.5px;
1903
2328
  text-align: center;
1904
2329
  }
2330
+ @media screen and (max-width: 600px) {
2331
+ /* Mobile layout */
2332
+ #homepage-block h3 {
2333
+ font-size: 1em;
2334
+ }
2335
+ }
1905
2336
 
1906
2337
  #homepage-block .buttons {
1907
2338
  display: flex;
1908
2339
  justify-content: flex-end;
1909
2340
  height: 30px;
1910
- padding: 10px;
1911
2341
  filter: brightness(0.90);
1912
2342
  }
2343
+ @media screen and (max-width: 600px) {
2344
+ /* Mobile layout */
2345
+ #homepage-block .buttons {
2346
+ filter: brightness(0.95);
2347
+ }
2348
+ }
1913
2349
 
1914
2350
  #homepage-block .button {
1915
2351
  height: 25px;
1916
2352
  opacity: 0;
1917
2353
  transition: opacity 0.5s ease;
1918
2354
  }
2355
+ @media screen and (max-width: 600px) {
2356
+ /* Mobile layout */
2357
+ #homepage-block .button {
2358
+ opacity: 100%;
2359
+ }
2360
+ }
1919
2361
 
1920
2362
  #homepage-block:hover .button {
1921
2363
  opacity: 100%;
1922
2364
  }
1923
2365
 
2366
+ #homepage-suggestion {
2367
+ display: none;
2368
+ padding: 20px;
2369
+ color: gray;
2370
+ }
2371
+ @media screen and (max-width: 600px) {
2372
+ /* Mobile layout */
2373
+ #homepage-suggestion {
2374
+ display: block;
2375
+ }
2376
+ }
2377
+
2378
+ #homepage-suggestion p {
2379
+ margin: 25px 0;
2380
+ }
2381
+
2382
+ #homepage-suggestion p.register {
2383
+ font-size: 0.8em;
2384
+ }
2385
+
1924
2386
  #homepage-panels {
1925
2387
  display: flex;
1926
2388
  justify-content: space-between;
1927
2389
  width: 100%;
1928
2390
  }
2391
+ @media screen and (max-width: 600px) {
2392
+ /* Mobile layout */
2393
+ #homepage-panels {
2394
+ flex-direction: column;
2395
+ }
2396
+ }
1929
2397
 
1930
2398
  #homepage-panels .panel {
1931
2399
  display: flex;
@@ -1937,11 +2405,16 @@ form .autocomplete-box .item.active {
1937
2405
  box-shadow: 2px 2px 5px var(--silver-dollar);
1938
2406
  background-color: #fafafa;
1939
2407
  }
2408
+ @media screen and (max-width: 600px) {
2409
+ /* Mobile layout */
2410
+ #homepage-panels .panel {
2411
+ margin: 20px 0;
2412
+ }
2413
+ }
1940
2414
 
1941
2415
  #homepage-panels div:first-of-type {
1942
2416
  margin-left: 0;
1943
2417
  }
1944
-
1945
2418
  #homepage-panels div:last-of-type {
1946
2419
  margin-right: 0;
1947
2420
  }
@@ -1961,7 +2434,6 @@ form .autocomplete-box .item.active {
1961
2434
  #homepage-panels .panel ul {
1962
2435
  margin: 0 0 15px;
1963
2436
  }
1964
-
1965
2437
  #homepage-panels .panel ul:last-of-type {
1966
2438
  margin: 0;
1967
2439
  }
@@ -2000,10 +2472,32 @@ form .autocomplete-box .item.active {
2000
2472
  margin: auto;
2001
2473
  text-align: justify;
2002
2474
  }
2475
+ @media screen and (max-width: 600px) {
2476
+ /* Mobile layout */
2477
+ .about {
2478
+ width: 90%;
2479
+ }
2480
+ }
2481
+
2482
+ @media screen and (max-width: 600px) {
2483
+ /* Mobile layout */
2484
+ .about p {
2485
+ margin: 20px 0;
2486
+ font-size: 10pt;
2487
+ line-height: 1.5;
2488
+ }
2489
+ }
2490
+
2003
2491
 
2004
2492
  #readme #header {
2005
2493
  margin: 40px 0;
2006
2494
  }
2495
+ @media screen and (max-width: 600px) {
2496
+ /* Mobile layout */
2497
+ #readme #header {
2498
+ margin: 20px 0 30px;
2499
+ }
2500
+ }
2007
2501
 
2008
2502
  #readme #title {
2009
2503
  margin: 0;
@@ -2038,6 +2532,13 @@ form .autocomplete-box .item.active {
2038
2532
  width: 80%;
2039
2533
  margin: 0 auto;
2040
2534
  }
2535
+ @media screen and (max-width: 600px) {
2536
+ /* Mobile layout */
2537
+ #changelog {
2538
+ width: 90%;
2539
+ font-size: 10pt;
2540
+ }
2541
+ }
2041
2542
 
2042
2543
  #changelog h1 {
2043
2544
  font-size: 32pt;
@@ -2053,6 +2554,12 @@ form .autocomplete-box .item.active {
2053
2554
  margin: 30px 0;
2054
2555
  font-size: 1.5em;
2055
2556
  }
2557
+ @media screen and (max-width: 600px) {
2558
+ /* Mobile layout */
2559
+ #changelog a.latest-release {
2560
+ text-align: center;
2561
+ }
2562
+ }
2056
2563
 
2057
2564
  #story .signature {
2058
2565
  margin-bottom: 100px;
@@ -2060,22 +2567,72 @@ form .autocomplete-box .item.active {
2060
2567
  font-style: oblique;
2061
2568
  text-align: right;
2062
2569
  }
2570
+ @media screen and (max-width: 600px) {
2571
+ /* Mobile layout */
2572
+ #story .signature {
2573
+ margin-top: 30px;
2574
+ }
2575
+ }
2576
+
2577
+ #credits .affiliation-disclaimer {
2578
+ margin-top: 200px;
2579
+ padding: 10px 20px;
2580
+ border: 1px solid var(--border-gray);
2581
+ border-radius: 10px;
2582
+ background-color: whitesmoke;
2583
+ font-size: 8pt;
2584
+ }
2585
+ @media screen and (max-width: 600px) {
2586
+ /* Mobile layout */
2587
+ #credits .affiliation-disclaimer {
2588
+ padding: 10px 10px;
2589
+ }
2590
+ }
2591
+
2592
+ @media screen and (max-width: 600px) {
2593
+ /* Mobile layout */
2594
+ #credits .affiliation-disclaimer p {
2595
+ font-size: 8pt;
2596
+ line-height: 1.25;
2597
+ }
2598
+ }
2063
2599
 
2064
2600
 
2065
2601
  /*
2066
- * Customization for the 'Credits' page
2602
+ * Customization for the 'Registration' page
2067
2603
  */
2068
- .affiliation-disclaimer {
2069
- margin-top: 80px;
2604
+ .no-registration-notice {
2605
+ width: 60%;
2606
+ margin: 25px auto;
2607
+ padding: 10px;
2608
+ border: 1px solid var(--moneytree-leaves);
2609
+ border-radius: 10px;
2610
+ box-shadow: 0 0 10px var(--moneytree-leaves);
2611
+ background-color: #f5f5f5;
2612
+ text-align: center;
2070
2613
  }
2071
2614
 
2072
2615
 
2073
2616
  /*
2074
2617
  * Customization for the 'Profile' page
2075
2618
  */
2619
+ @media screen and (max-width: 600px) {
2620
+ /* Mobile layout */
2621
+ #profile {
2622
+ width: 90%;
2623
+ margin: auto;
2624
+ }
2625
+ }
2626
+
2076
2627
  #profile h2 {
2077
2628
  font-size: 24pt;
2078
2629
  }
2630
+ @media screen and (max-width: 600px) {
2631
+ /* Mobile layout */
2632
+ #profile h2 {
2633
+ font-size: 20pt;
2634
+ }
2635
+ }
2079
2636
 
2080
2637
  #profile .username-section {
2081
2638
  font-size: 24pt;
@@ -2098,13 +2655,25 @@ form .autocomplete-box .item.active {
2098
2655
  margin-right: 10%;
2099
2656
  margin-bottom: 60px;
2100
2657
  }
2101
-
2102
- #profile .settings.profile-section {
2658
+ @media screen and (max-width: 600px) {
2659
+ /* Mobile layout */
2660
+ #profile .profile-section {
2661
+ margin-bottom: 25px;
2662
+ }
2663
+ }
2664
+
2665
+ #profile .settings.profile-section {
2103
2666
  flex-basis: 100%;
2104
2667
  margin-right: 0;
2105
2668
  padding-bottom: 50px;
2106
2669
  border-bottom: 0.5px solid var(--border-gray);
2107
2670
  }
2671
+ @media screen and (max-width: 600px) {
2672
+ /* Mobile layout */
2673
+ #profile .settings.profile-section {
2674
+ padding-bottom: 25px;
2675
+ }
2676
+ }
2108
2677
 
2109
2678
  #profile .banking.profile-section .bank-list {
2110
2679
  width: 90%;
@@ -2126,15 +2695,23 @@ form .autocomplete-box .item.active {
2126
2695
  /*
2127
2696
  * Customization for the 'Bank Accounts' page
2128
2697
  */
2698
+ #bank-container {
2699
+ display: flex;
2700
+ flex-direction: column;
2701
+ gap: 25px;
2702
+ padding: 10px;
2703
+ box-sizing: border-box;
2704
+ }
2705
+
2706
+ #bank-container .bank-stack {
2707
+ max-width: 1000px;
2708
+ }
2709
+
2129
2710
  #bank-container .bank-stack .stack-title {
2130
2711
  padding: 0 30px;
2131
2712
  text-align: left;
2132
2713
  }
2133
2714
 
2134
- #bank-container .account-block {
2135
- padding: 25px 30px;
2136
- }
2137
-
2138
2715
  #bank-container .account-block .account-info {
2139
2716
  display: flex;
2140
2717
  align-items: center;
@@ -2156,36 +2733,41 @@ form .autocomplete-box .item.active {
2156
2733
  }
2157
2734
 
2158
2735
  #bank-account-settings {
2159
- margin: 50px 0 25px;
2160
- padding: 0 25px;
2736
+ margin: 50px 25px 25px;
2161
2737
  }
2162
2738
 
2163
2739
  #account-type-container {
2164
- width: 30%;
2740
+ width: 40%;
2165
2741
  min-width: 350px;
2166
2742
  border: 2px solid var(--border-gray);
2167
2743
  background-color: #f5f5f5;
2168
2744
  }
2169
-
2170
- #account-type-container h2 {
2171
- margin: 0;
2172
- padding: 10px;
2745
+ @media screen and (max-width: 600px) {
2746
+ /* Mobile layout */
2747
+ #account-type-container {
2748
+ width: 100%;
2749
+ min-width: 200px;
2750
+ }
2173
2751
  }
2174
2752
 
2175
- #account-type-container .account-types {
2176
- border-top: 2px solid var(--border-gray);
2753
+
2754
+ /*
2755
+ * Customization for the 'New Bank Account' & 'Update Bank Account' pages
2756
+ */
2757
+ form#bank-account #last-four-digits-field {
2758
+ flex-basis: 25%;
2759
+ min-width: 150px;
2177
2760
  }
2178
2761
 
2179
- #account-type-container .account-type {
2180
- padding: 10px;
2181
- border-top: 0.5px solid var(--border-gray);
2182
- border-bottom: 0.5px solid var(--border-gray);
2762
+ form#bank-account #active-field {
2763
+ flex-basis: 10%;
2764
+ min-width: 60px;
2183
2765
  }
2184
2766
 
2767
+ form#bank-account #active-field label {
2768
+ text-align: center;
2769
+ }
2185
2770
 
2186
- /*
2187
- * Customization for the 'New Bank Account' & 'Update Bank Account' pages
2188
- */
2189
2771
  form#bank-account .hidden {
2190
2772
  display: none;
2191
2773
  }
@@ -2197,7 +2779,7 @@ form#bank-account .hidden {
2197
2779
  #bank-account-summaries-container {
2198
2780
  display: flex;
2199
2781
  flex-direction: column;
2200
- align-items: center
2782
+ align-items: center;
2201
2783
  }
2202
2784
 
2203
2785
  #bank-account-summaries-container h2.bank {
@@ -2221,7 +2803,11 @@ form#bank-account .hidden {
2221
2803
  #bank-account-summaries {
2222
2804
  display: flex;
2223
2805
  flex-direction: column;
2806
+ align-items: center;
2807
+ gap: 25px;
2224
2808
  width: 100%;
2809
+ padding: 10px;
2810
+ box-sizing: border-box;
2225
2811
  }
2226
2812
 
2227
2813
  #bank-account-summaries .account-type-stack {
@@ -2229,7 +2815,13 @@ form#bank-account .hidden {
2229
2815
  flex-direction: column;
2230
2816
  width: 60%;
2231
2817
  min-width: 400px;
2232
- margin: 15px auto 25px;
2818
+ }
2819
+ @media screen and (max-width: 600px) {
2820
+ /* Mobile layout */
2821
+ #bank-account-summaries .account-type-stack {
2822
+ width: 100%;
2823
+ min-width: 0;
2824
+ }
2233
2825
  }
2234
2826
 
2235
2827
  #bank-account-summaries .account-block {
@@ -2238,19 +2830,43 @@ form#bank-account .hidden {
2238
2830
  align-items: center;
2239
2831
  padding: 30px 10%;
2240
2832
  }
2833
+ @media screen and (max-width: 600px) {
2834
+ /* Mobile layout */
2835
+ #bank-account-summaries .account-block {
2836
+ padding: 20px 20px;
2837
+ }
2838
+ }
2241
2839
 
2242
2840
  #bank-account-summaries .account-block .title {
2243
2841
  font-size: 16pt;
2244
2842
  }
2843
+ @media screen and (max-width: 600px) {
2844
+ /* Mobile layout */
2845
+ #bank-account-summaries .account-block .title {
2846
+ font-size: 12pt;
2847
+ }
2848
+ }
2245
2849
 
2246
2850
  #bank-account-summaries .account-block .title .digits {
2247
2851
  margin-right: 10px;
2248
2852
  }
2853
+ @media screen and (max-width: 600px) {
2854
+ /* Mobile layout */
2855
+ #bank-account-summaries .account-block .title .digits {
2856
+ display: block;
2857
+ }
2858
+ }
2249
2859
 
2250
2860
  #bank-account-summaries .account-block .balance {
2251
2861
  font-size: 24pt;
2252
2862
  font-weight: bold;
2253
2863
  }
2864
+ @media screen and (max-width: 600px) {
2865
+ /* Mobile layout */
2866
+ #bank-account-summaries .account-block .balance {
2867
+ font-size: 18pt;
2868
+ }
2869
+ }
2254
2870
 
2255
2871
 
2256
2872
  /*
@@ -2262,18 +2878,25 @@ form#bank-account .hidden {
2262
2878
  }
2263
2879
  }
2264
2880
 
2265
- #balance-chart {
2881
+ #balance-chart-container {
2266
2882
  width: 42.5%;
2267
2883
  max-width: 600px;
2268
- margin-top: 40px;
2884
+ margin: 40px auto 0;
2269
2885
  }
2270
2886
  @media screen and (max-width: 1500px) {
2271
- #balance-chart {
2887
+ #balance-chart-container {
2272
2888
  order: 2;
2273
2889
  width: 45%;
2274
2890
  min-width: 450px;
2275
2891
  }
2276
2892
  }
2893
+ @media screen and (max-width: 600px) {
2894
+ /* Mobile layout */
2895
+ #balance-chart-container {
2896
+ width: 90%;
2897
+ min-width: 200px;
2898
+ }
2899
+ }
2277
2900
 
2278
2901
  #balance-chart .ct-chart-line {
2279
2902
  overflow: visible;
@@ -2287,6 +2910,13 @@ form#bank-account .hidden {
2287
2910
  stroke-width: 2px;
2288
2911
  }
2289
2912
 
2913
+ @media screen and (max-width: 600px) {
2914
+ /* Mobile layout */
2915
+ #balance-chart .ct-label {
2916
+ font-size: 0.5rem;
2917
+ }
2918
+ }
2919
+
2290
2920
 
2291
2921
  /*
2292
2922
  * Customization for the 'New Bank Transaction'/'Update Bank Transaction' pages
@@ -2294,6 +2924,12 @@ form#bank-account .hidden {
2294
2924
  form#bank-transaction .bank-field {
2295
2925
  flex: 3;
2296
2926
  }
2927
+ @media screen and (max-width: 600px) {
2928
+ /* Mobile layout */
2929
+ form#bank-transaction .bank-field {
2930
+ min-width: 200px;
2931
+ }
2932
+ }
2297
2933
 
2298
2934
  form#bank-transaction .account-type-field {
2299
2935
  flex: 1;
@@ -2383,21 +3019,22 @@ form#bank-transaction .transfer-title {
2383
3019
  transition: margin-left 0.2s;
2384
3020
  perspective: 1200px;
2385
3021
  }
2386
-
2387
- #credit-account-info div.credit-card-block:hover {
2388
- margin-left: 0;
2389
- padding-left: 15px;
2390
- }
2391
-
2392
3022
  #credit-account-info div.credit-card-block:first-of-type {
2393
3023
  padding-right: 10px;
2394
3024
  }
2395
-
2396
3025
  #credit-account-info div.credit-card-block:last-of-type {
2397
3026
  margin-left: 0;
2398
3027
  padding-left: 0;
2399
3028
  }
2400
3029
 
3030
+ #credit-account-info div.credit-card-block:hover {
3031
+ margin-left: 0;
3032
+ padding-left: 15px;
3033
+ }
3034
+ #credit-account-info div.credit-card-block:last-of-type:hover {
3035
+ padding-left: 0;
3036
+ }
3037
+
2401
3038
  #credit-account-info .credit-card .card-face {
2402
3039
  cursor: pointer;
2403
3040
  }
@@ -2415,10 +3052,6 @@ form#bank-transaction .transfer-title {
2415
3052
  /*
2416
3053
  * Customization for the 'New Card' & 'Update Card' pages
2417
3054
  */
2418
- form#card {
2419
- min-width: 500px;
2420
- }
2421
-
2422
3055
  form#card #last-four-digits-field {
2423
3056
  flex-basis: 25%;
2424
3057
  min-width: 150px;
@@ -2505,12 +3138,34 @@ form#card #statement-due-day-field {
2505
3138
  #credit-statements {
2506
3139
  display: flex;
2507
3140
  justify-content: space-around;
3141
+ gap: 25px;
3142
+ width: 100%;
3143
+ padding: 10px;
3144
+ box-sizing: border-box;
3145
+ }
3146
+ @media screen and (max-width: 600px) {
3147
+ /* Mobile layout */
3148
+ #credit-statements {
3149
+ justify-content: left;
3150
+ scroll-snap-type: x mandatory;
3151
+ padding-bottom: 20px;
3152
+ overflow-x: scroll;
3153
+ }
2508
3154
  }
2509
3155
 
2510
3156
  #credit-statements .card-stack {
2511
3157
  display: flex;
2512
3158
  flex-direction: column;
2513
3159
  height: min-content;
3160
+ box-sizing: border-box;
3161
+ }
3162
+ @media screen and (max-width: 600px) {
3163
+ /* Mobile layout */
3164
+ #credit-statements .card-stack {
3165
+ flex: 0 0 100%;
3166
+ scroll-snap-align: center;
3167
+ scroll-snap-stop: always;
3168
+ }
2514
3169
  }
2515
3170
 
2516
3171
  #credit-statements .card-stack .stack-title {
@@ -2524,6 +3179,13 @@ form#card #statement-due-day-field {
2524
3179
  width: 275px;
2525
3180
  padding: 45px 50px;
2526
3181
  }
3182
+ @media screen and (max-width: 600px) {
3183
+ /* Mobile layout */
3184
+ #credit-statements .statement-block {
3185
+ width: 200px;
3186
+ padding: 30px 40px;
3187
+ }
3188
+ }
2527
3189
 
2528
3190
  #credit-statements .statement-block .date,
2529
3191
  #credit-statements .statement-block .payment {
@@ -2536,16 +3198,35 @@ form#card #statement-due-day-field {
2536
3198
  font-size: 22pt;
2537
3199
  letter-spacing: -1px;
2538
3200
  }
3201
+ @media screen and (max-width: 600px) {
3202
+ /* Mobile layout */
3203
+ #credit-statements .statement-block .date .month {
3204
+ font-size: 16pt;
3205
+ }
3206
+ }
2539
3207
 
2540
3208
  #credit-statements .statement-block .date .year {
2541
3209
  font-size: 16pt;
2542
3210
  letter-spacing: 1px;
2543
3211
  }
3212
+ @media screen and (max-width: 600px) {
3213
+ /* Mobile layout */
3214
+ #credit-statements .statement-block .date .year {
3215
+ font-size: 12pt;
3216
+ }
3217
+ }
2544
3218
 
2545
3219
  #credit-statements .statement-block .payment .balance {
2546
3220
  font-size: 30pt;
2547
3221
  font-weight: bold;
2548
3222
  }
3223
+ @media screen and (max-width: 600px) {
3224
+ /* Mobile layout */
3225
+ #credit-statements .statement-block .payment .balance {
3226
+ font-size: 24pt;
3227
+ }
3228
+ }
3229
+
2549
3230
 
2550
3231
  #credit-statements .statement-block .payment .paid-notice {
2551
3232
  font-size: 10pt;
@@ -2555,10 +3236,6 @@ form#card #statement-due-day-field {
2555
3236
  /*
2556
3237
  * Customization for the (credit) 'Statement Details' page
2557
3238
  */
2558
- #credit-statement-details #statement-summary {
2559
- min-width: 375px;
2560
- }
2561
-
2562
3239
  #credit-statement-details #statement-summary #payment {
2563
3240
  width: 100%;
2564
3241
  font-size: 12pt;
@@ -2567,7 +3244,8 @@ form#card #statement-due-day-field {
2567
3244
  #credit-statement-details #statement-summary #due {
2568
3245
  float: left;
2569
3246
  display: flex;
2570
- width: 140px;
3247
+ width: 40%;
3248
+ min-width: 160px;
2571
3249
  }
2572
3250
 
2573
3251
  #credit-statement-details #statement-summary #due-date {
@@ -2577,15 +3255,44 @@ form#card #statement-due-day-field {
2577
3255
 
2578
3256
  #credit-statement-details #statement-summary #paid {
2579
3257
  float: right;
3258
+ width: 60%
3259
+ }
3260
+ @media screen and (max-width: 600px) {
3261
+ /* Mobile layout */
3262
+ #credit-statement-details #statement-summary #paid {
3263
+ width: 60px;
3264
+ }
3265
+ }
3266
+
3267
+ @media screen and (max-width: 600px) {
3268
+ /* Mobile layout */
3269
+ #credit-statement-details #statement-summary #paid.slide-text-gadget:hover .sleeve {
3270
+ transform: none;
3271
+ }
3272
+ }
3273
+
3274
+ @media screen and (max-width: 600px) {
3275
+ /* Mobile layout */
3276
+ #credit-statement-details #statement-summary #paid.slide-text-gadget:hover .sleeve .main {
3277
+ padding-right: 0;
3278
+ }
2580
3279
  }
2581
3280
 
2582
3281
  form#pay {
2583
3282
  clear: left;
2584
3283
  position: relative;
2585
- width: 300px;
3284
+ width: 85%;
2586
3285
  margin: 50px auto 0;
2587
3286
  border-radius: 5px;
2588
3287
  box-sizing: border-box;
3288
+ font-size: 0.9em;
3289
+ }
3290
+ @media screen and (max-width: 600px) {
3291
+ /* Mobile layout */
3292
+ form#pay {
3293
+ width: 100%;
3294
+ font-size: 0.75em;
3295
+ }
2589
3296
  }
2590
3297
 
2591
3298
  form#pay button {
@@ -2620,6 +3327,12 @@ form#pay .form-line {
2620
3327
  border-bottom-right-radius: 0;
2621
3328
  box-sizing: border-box;
2622
3329
  }
3330
+ @media screen and (max-width: 600px) {
3331
+ /* Mobile layout */
3332
+ form#pay .form-line {
3333
+ width: 70%;
3334
+ }
3335
+ }
2623
3336
 
2624
3337
  form#pay .form-line input,
2625
3338
  form#pay .form-line select {
@@ -2634,12 +3347,25 @@ form#pay .form-line .dollar-sign {
2634
3347
  height: 100%;
2635
3348
  color: #666666;
2636
3349
  }
3350
+ @media screen and (max-width: 600px) {
3351
+ /* Mobile layout */
3352
+ form#pay .form-line .dollar-sign {
3353
+ top: -15px;
3354
+ }
3355
+ }
2637
3356
 
2638
3357
  form#pay .form-line #pay-amount,
2639
3358
  form#pay .form-line #pay-date {
2640
- width: 50%;
3359
+ width: 49%;
2641
3360
  border-bottom: 2px solid #eeeeee;
2642
3361
  }
3362
+ @media screen and (max-width: 600px) {
3363
+ /* Mobile layout */
3364
+ form#pay .form-line #pay-amount,
3365
+ form#pay .form-line #pay-date {
3366
+ width: 100%;
3367
+ }
3368
+ }
2643
3369
 
2644
3370
  form#pay .form-line #pay-amount {
2645
3371
  padding-left: 25px;
@@ -2650,6 +3376,12 @@ form#pay .form-line #pay-amount {
2650
3376
  border-bottom-left-radius: 0;
2651
3377
  text-align: right;
2652
3378
  }
3379
+ @media screen and (max-width: 600px) {
3380
+ /* Mobile layout */
3381
+ form#pay .form-line #pay-amount {
3382
+ padding-right: 5px;
3383
+ }
3384
+ }
2653
3385
 
2654
3386
  form#pay .form-line #pay-date {
2655
3387
  text-align: center;
@@ -2657,7 +3389,6 @@ form#pay .form-line #pay-date {
2657
3389
  border-bottom-left-radius: 0;
2658
3390
  }
2659
3391
 
2660
-
2661
3392
  form#pay #make-payment {
2662
3393
  position: absolute;
2663
3394
  top: 0;
@@ -2684,6 +3415,13 @@ form#pay #make-payment[type="submit"] {
2684
3415
  border-top-left-radius: 0;
2685
3416
  border-bottom-left-radius: 0;
2686
3417
  }
3418
+ @media screen and (max-width: 600px) {
3419
+ /* Mobile layout */
3420
+ form#pay #make-payment[type="submit"] {
3421
+ left: 70%;
3422
+ width: 30%;
3423
+ }
3424
+ }
2687
3425
 
2688
3426
  form#pay #make-payment[type="submit"] #prompt {
2689
3427
  display: none;
@@ -2699,6 +3437,194 @@ form#pay #make-payment[type="submit"] #prompt {
2699
3437
  text-align: right;
2700
3438
  }
2701
3439
 
3440
+ #category-chart-container {
3441
+ width: 42.5%;
3442
+ max-width: 600px;
3443
+ margin: 40px auto 0;
3444
+ }
3445
+ @media screen and (max-width: 1500px) {
3446
+ #category-chart-container {
3447
+ order: 2;
3448
+ width: 45%;
3449
+ min-width: 450px;
3450
+ }
3451
+ }
3452
+ @media screen and (max-width: 600px) {
3453
+ #category-chart-container {
3454
+ width: 80%;
3455
+ min-width: 100px;
3456
+ }
3457
+ }
3458
+
3459
+ #category-chart.ct-chart {
3460
+ min-height: 400px;
3461
+ }
3462
+
3463
+ #category-chart text.ct-label {
3464
+ transition: fill 0.1s ease;
3465
+ }
3466
+
3467
+ #category-chart text.ct-label:hover {
3468
+ fill: rgba(0, 0, 0, 0.8);
3469
+ }
3470
+
3471
+ #category-chart .ct-series-a .ct-slice-donut {
3472
+ stroke: var(--moneytree-leaves);
3473
+ }
3474
+
3475
+ #category-chart .ct-series-b .ct-slice-donut {
3476
+ stroke: #41493b;
3477
+ }
3478
+
3479
+ #category-chart .ct-series-c .ct-slice-donut {
3480
+ stroke: #a4ae9d;
3481
+ }
3482
+
3483
+ #category-chart .ct-series-d .ct-slice-donut {
3484
+ stroke: #00bdfb;
3485
+ }
3486
+
3487
+ #category-chart .ct-series-e .ct-slice-donut {
3488
+ stroke: #0087c3;
3489
+ }
3490
+
3491
+
3492
+ /*
3493
+ * Customization for the (credit) 'Statement Reconciliation' details page
3494
+ */
3495
+ #credit-statement-reconciliation-details .note {
3496
+ font-size: 9pt;
3497
+ color: #888888;
3498
+ }
3499
+
3500
+ #statement-reconciliation-summary {
3501
+ min-width: 75%;
3502
+ }
3503
+
3504
+ #statement-reconciliation-summary.summary-box .balance {
3505
+ justify-content: center;
3506
+ margin: 20px 0 30px;
3507
+ }
3508
+
3509
+ #statement-reconciliation-summary.summary-box .balance .dollar-sign {
3510
+ margin-right: 15px;
3511
+ }
3512
+
3513
+ #statement-reconciliation-summary .reconciliation-indicator {
3514
+ width: 200px;
3515
+ align-self: center;
3516
+ padding: 50px;
3517
+ }
3518
+
3519
+ #statement-reconciliation-summary #statement-discrepancies-container h2 {
3520
+ margin: 25px 0;
3521
+ color: #888888;
3522
+ font-size: 14pt;
3523
+ font-weight: 500;
3524
+ letter-spacing: 2px;
3525
+ text-transform: uppercase;
3526
+ }
3527
+
3528
+ #credit-statement-reconciliation-details statement-transactions-container .note {
3529
+ padding: 0 20px 20px;
3530
+ }
3531
+
3532
+ #credit-statement-reconciliation-details div.discrepancy-category {
3533
+ margin-bottom: 30px;
3534
+ }
3535
+
3536
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity {
3537
+ display: flex;
3538
+ flex-direction: row;
3539
+ margin: 3px 0px;
3540
+ padding: 5px 15px;
3541
+ border-radius: 10px;
3542
+ }
3543
+
3544
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity:hover {
3545
+ box-shadow: 0 0 3px 0 #cccccc;
3546
+ }
3547
+
3548
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity .button {
3549
+ margin-left: auto;
3550
+ cursor: pointer;
3551
+ }
3552
+
3553
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity .button .icon {
3554
+ width: 25px;
3555
+ opacity: 0;
3556
+ }
3557
+
3558
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity:hover .button .icon {
3559
+ opacity: 1;
3560
+ }
3561
+
3562
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity.discrepancy-highlight {
3563
+ box-shadow: 0 0 5px 0 var(--moneytree-leaves);
3564
+ }
3565
+
3566
+ #credit-statement-reconciliation-details #statement-discrepancies-container .reconciliation-activity.discrepancy-highlight:hover {
3567
+ box-shadow: 0 0 5px 0 var(--moneytree-leaves);
3568
+ }
3569
+
3570
+ #credit-statement-reconciliation-details #statement-transactions-container .transaction .discrepancy-highlight {
3571
+ background-color: #f1fbeb;
3572
+ background-image: linear-gradient(135deg, #fff, 5%, #f1fbeb, 95%, #fff);
3573
+ color: var(--moneytree);
3574
+ font-weight: 500;
3575
+ }
3576
+
3577
+
3578
+ /*
3579
+ * Customization for the statement reconciliation modal
3580
+ */
3581
+ #statement-reconciliation.modal {
3582
+ width: 50%;
3583
+ min-width: 300px;
3584
+ }
3585
+
3586
+ #statement-reconciliation.modal .modal-box {
3587
+ height: 100%;
3588
+ width: 100%;
3589
+ padding: 30px;
3590
+ }
3591
+
3592
+ #statement-reconciliation.modal .buttons {
3593
+ display: flex;
3594
+ justify-content: flex-end;
3595
+ align-items: center;
3596
+ height: 30px;
3597
+ width: 100%;
3598
+ }
3599
+
3600
+ #statement-reconciliation.modal .buttons .button {
3601
+ height: 30px;
3602
+ width: 30px;
3603
+ }
3604
+
3605
+ #statement-reconciliation.modal p {
3606
+ width: 80%;
3607
+ margin: auto;
3608
+ }
3609
+
3610
+ #statement-reconciliation.modal form {
3611
+ margin: 30px auto;
3612
+ padding: 20px 50px 30px;
3613
+ border: 3px solid var(--moneytree-leaves);
3614
+ border-radius: 15px;
3615
+ background-color: #fefefe;
3616
+ }
3617
+
3618
+ #statement-reconciliation.modal form input {
3619
+ margin: 3px 0;
3620
+ }
3621
+
3622
+ #statement-reconciliation.modal form label {
3623
+ text-transform: uppercase;
3624
+ font-size: 10pt;
3625
+ letter-spacing: 2px;
3626
+ }
3627
+
2702
3628
 
2703
3629
  /*
2704
3630
  * Customization for the 'New Credit Transaction'/
@@ -2726,13 +3652,145 @@ form#credit-transaction .merchant-field {
2726
3652
  /*
2727
3653
  * Customization for the transaction submission page
2728
3654
  */
2729
- #receipt {
2730
- width: 31%;
3655
+ #submission {
3656
+ display: flex;
3657
+ flex-direction: column;
3658
+ align-items: center;
3659
+ width: 50%;
2731
3660
  margin: auto;
2732
3661
  }
3662
+ @media screen and (max-width: 600px) {
3663
+ /* Mobile layout */
3664
+ #submission {
3665
+ width: 90%;
3666
+ }
3667
+ }
3668
+
3669
+ #submission-title {
3670
+ text-align: center;
3671
+ }
3672
+
3673
+ #receipt {
3674
+ width: 60%;
3675
+ min-width: 250px;
3676
+ max-width: 300px;
3677
+ margin: 40px auto;
3678
+ padding: 10px 20px 30px;
3679
+ box-shadow: 2px 2px 6px #bbbbbb;
3680
+ background-color: #fafafa;
3681
+ font-family: monospace;
3682
+ }
3683
+ @media screen and (max-width: 600px) {
3684
+ /* Mobile layout */
3685
+ #receipt {
3686
+ margin: 10px auto 30px;
3687
+ }
3688
+ }
2733
3689
 
2734
3690
  #receipt-title {
3691
+ margin-bottom: 20px;
2735
3692
  text-align: center;
3693
+ color: var(--silver-dollar);
3694
+ font-size: 10pt;
3695
+ font-weight: 400;
3696
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
3697
+ letter-spacing: 2px;
3698
+ text-transform: uppercase;
3699
+ }
3700
+
3701
+ #receipt .receipt-item {
3702
+ display: flex;
3703
+ margin: 15px 0;
3704
+ }
3705
+
3706
+ #receipt .receipt-item .receipt-key {
3707
+ font-weight: bold;
3708
+ }
3709
+
3710
+ #receipt #receipt-header {
3711
+ margin-bottom: 40px;
3712
+ }
3713
+
3714
+ #receipt #receipt-header #receipt-merchant {
3715
+ font-size: 14pt;
3716
+ justify-content: center;
3717
+ }
3718
+
3719
+ #receipt #receipt-header #receipt-date {
3720
+ font-size: 10pt;
3721
+ font-weight: normal;
3722
+ justify-content: center;
3723
+ }
3724
+
3725
+ #receipt .receipt-subtransaction {
3726
+ display: flex;
3727
+ gap: 10px 20px;
3728
+ margin: 10px 0;
3729
+ }
3730
+
3731
+ #receipt .receipt-subtransaction .note,
3732
+ #receipt #receipt-total .total {
3733
+ flex: 4;
3734
+ }
3735
+
3736
+ #receipt .receipt-subtransaction .amount,
3737
+ #receipt #receipt-total .amount {
3738
+ flex: 1;
3739
+ text-align: right;
3740
+ }
3741
+
3742
+ #receipt #receipt-card {
3743
+ margin-top: 40px;
3744
+ }
3745
+
3746
+ #receipt #receipt-card .receipt-item {
3747
+ flex-direction: column;
3748
+ }
3749
+
3750
+ #receipt #receipt-card .receipt-item .receipt-key {
3751
+ margin-bottom: 5px;
3752
+ }
3753
+
3754
+ #receipt #receipt-card .receipt-item .receipt-value {
3755
+ margin-left: 0;
3756
+ }
3757
+
3758
+ #submission-actions {
3759
+ display: flex;
3760
+ flex-direction: column;
3761
+ gap: 3px;
3762
+ align-items: center;
3763
+ width: 100%;
3764
+ max-width: 400px;
3765
+ }
3766
+ @media screen and (max-width: 600px) {
3767
+ /* Mobile layout */
3768
+ #submission-actions {
3769
+ gap: 5px;
3770
+ }
3771
+ }
3772
+
3773
+ #submission-actions .submission.button {
3774
+ width: 100%;
3775
+ padding: 3px 10px;
3776
+ border: 1px solid var(--border-gray);
3777
+ border-radius: 5px;
3778
+ background-color: var(--button-background-base);
3779
+ background-image: var(--button-background);;
3780
+ font-size: 12pt;
3781
+ text-decoration: none;
3782
+ box-sizing: border-box;
3783
+ }
3784
+ @media screen and (max-width: 600px) {
3785
+ /* Mobile layout */
3786
+ #submission-actions .submission.button {
3787
+ padding: 10px;
3788
+ font-size: 10pt;
3789
+ }
3790
+ }
3791
+
3792
+ #submission-actions .submission.button:hover {
3793
+ filter: brightness(0.98);
2736
3794
  }
2737
3795
 
2738
3796