Skouter mortgage estimates. Web application with view written in PHP and Vue, but controller and models in Go.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
 

427 lignes
5.8 KiB

  1. :root {
  2. --primary-bg: white;
  3. --secondary-bg: #F7F9FA;
  4. --text: #4C555E;
  5. --text-dark: #394046;
  6. --text-light: #1D262E;
  7. --text-lighter: #28323B;
  8. --text-lightest: #A1A7AD;
  9. --text-important: #922724;
  10. --outline: #DFE3E8;
  11. --brand: #0f6b4b;
  12. --shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
  13. --shadow-md: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px;
  14. }
  15. body {
  16. margin: 0;
  17. }
  18. h2 {
  19. color: var(--text);
  20. }
  21. label {
  22. font-size: 16px;
  23. }
  24. button {
  25. background: var(--text);
  26. color: white;
  27. border: none;
  28. padding: 7px;
  29. border-radius: 3px;
  30. font-weight: bold;
  31. }
  32. button:not(:disabled) {
  33. cursor: pointer;
  34. }
  35. button:disabled {
  36. background: grey;
  37. }
  38. input, select {
  39. border: 2px solid var(--outline);
  40. border-radius: 3px;
  41. }
  42. input[type=checkbox] {
  43. margin-right: auto;
  44. /* height: 20px; */
  45. /* width: 20px; */
  46. }
  47. section.form label {
  48. display: flex;
  49. align-items: center;
  50. }
  51. .page section.form h3 {
  52. margin: 10px 0 10px 30px;
  53. }
  54. #app {
  55. width: 100%;
  56. height: 100%;
  57. }
  58. .app-panel {
  59. width: 100%;
  60. position: relative;
  61. display: flex;
  62. justify-content: space-between;
  63. }
  64. menu.sidebar {
  65. position: relative;
  66. margin: 0;
  67. padding: 35px 0px;
  68. background: var(--secondary-bg);
  69. list-style: none;
  70. font-size: 18px;
  71. display: flex;
  72. flex-direction: column;
  73. gap: 20px;
  74. }
  75. ul.errors {
  76. color: var(--text-important);
  77. margin: 20px 0;
  78. min-height: 40px 0;
  79. }
  80. menu.sidebar a {
  81. color: var(--text);
  82. display: flex;
  83. align-items: center;
  84. gap: 10px;
  85. text-decoration: none;
  86. padding: 10px 10px;
  87. }
  88. menu.sidebar a.active {
  89. background: var(--primary-bg);
  90. }
  91. /* The user avatar */
  92. menu.sidebar img {
  93. width: 50px;
  94. height: 50px;
  95. margin: 0 auto;
  96. border-radius: 50%;
  97. }
  98. menu.sidebar a:hover {
  99. color: var(--text-light);
  100. cursor: pointer;
  101. }
  102. menu.sidebar svg {
  103. height: 24px;
  104. width: 24px;
  105. }
  106. .spinner {
  107. animation: rotate 2s linear infinite;
  108. z-index: 2;
  109. top: 50%;
  110. left: 50%;
  111. margin: -25px 0 0 -25px;
  112. width: 50px;
  113. height: 50px;
  114. }
  115. .spinner .path {
  116. stroke: var(--text);
  117. stroke-linecap: round;
  118. animation: dash 1.5s ease-in-out infinite;
  119. }
  120. @keyframes rotate {
  121. 100% {
  122. transform: rotate(360deg);
  123. }
  124. }
  125. @keyframes dash {
  126. 0% {
  127. stroke-dasharray: 1, 150;
  128. stroke-dashoffset: 0;
  129. }
  130. 50% {
  131. stroke-dasharray: 90, 150;
  132. stroke-dashoffset: -35;
  133. }
  134. 100% {
  135. stroke-dasharray: 90, 150;
  136. stroke-dashoffset: -124;
  137. }
  138. }
  139. .page.loading {
  140. width: 100%;
  141. display: flex;
  142. justify-content: center;
  143. align-items: center;
  144. }
  145. .page {
  146. padding: 0 2%;
  147. width: 100%;
  148. overflow-y: scroll;
  149. scrollbar-width: none;
  150. }
  151. .page section {
  152. margin-top: 50px;
  153. margin: auto;
  154. margin-bottom: 40px;
  155. max-width: 700px;
  156. }
  157. #home.page section:first-of-type {
  158. margin-top: 100px;
  159. }
  160. #home .announce {
  161. min-height: 150px;
  162. border: 1px solid var(--outline);
  163. /* border-radius: 4px; */
  164. }
  165. .page section {
  166. color: var(--text);
  167. }
  168. .page section h3 {
  169. margin-left: 10px;
  170. color: var(--text-lighter);
  171. }
  172. section.loans-list {
  173. display: flex;
  174. flex-direction: column;
  175. width: fit-content;
  176. margin: 0 0 50px 0;
  177. justify-content: center;
  178. border-left: 1px solid var(--text-lightest);
  179. padding: 10px;
  180. margin-bottom: 50px;
  181. }
  182. .loans-list h3:not(.sel) {
  183. color: var(--text-lightest);
  184. }
  185. .loans-list h3 {
  186. cursor: pointer;
  187. width: fit-content;
  188. min-height: 20px;
  189. min-width: 20px;
  190. }
  191. .loans-list .add svg {
  192. width: 35px;
  193. height: 35px;
  194. margin: auto;
  195. display: block;
  196. }
  197. .loans-list .add svg:hover {
  198. color: black;
  199. }
  200. section.radios {
  201. display: grid;
  202. grid-template-columns: 50px 1fr;
  203. justify-content: center;
  204. row-gap: 20px;
  205. max-width: 250px;
  206. }
  207. section.inputs {
  208. display: flex;
  209. flex-flow: column;
  210. max-width: 250px;
  211. row-gap: 15px;
  212. position: relative;
  213. }
  214. .settings.page section.letterhead {
  215. max-width: 400px;
  216. }
  217. .settings.page .letterhead canvas {
  218. max-width: 400px;
  219. width: 100%;
  220. }
  221. section.radios h3 {
  222. grid-column: 1 / 3;
  223. }
  224. .form button {
  225. }
  226. .form.radios input {
  227. height: 20px;
  228. }
  229. svg.close {
  230. position: absolute;
  231. right: 10px;
  232. top: 10px;
  233. height: 50px;
  234. width: 50px;
  235. cursor: pointer;
  236. color: var(--text);
  237. }
  238. .sidebar svg.close {
  239. width: 34px;
  240. height: 34px;
  241. }
  242. .close-btn {
  243. width: 30px;
  244. height: 30px;
  245. }
  246. div.sidebar-toggle {
  247. width: 50px;
  248. }
  249. div.sidebar-toggle svg {
  250. width: 100%;
  251. height: 60px;
  252. color: var(--text);
  253. cursor: pointer;
  254. }
  255. div.hint {
  256. position: absolute;
  257. top: 10px;
  258. right: 15%;
  259. /* margin: auto; */
  260. }
  261. div.hint img {
  262. width: 25px;
  263. height: 25px;
  264. }
  265. div.hint .tooltip {
  266. position: absolute;
  267. width: 150px;
  268. right: -2em;
  269. background: white;
  270. color: grey;
  271. padding: 10px;
  272. border-radius: 3px;
  273. box-shadow: var(--shadow);
  274. visibility: hidden;
  275. }
  276. div.hint:hover .tooltip {
  277. visibility: visible;
  278. }
  279. section.form .fee {
  280. display: flex;
  281. }
  282. section.form .fee.required {
  283. display: flex;
  284. background: #ddd;
  285. }
  286. section.form .fee img {
  287. margin-left: auto;
  288. }
  289. div.modal-prompt {
  290. position: fixed;
  291. z-index: 5;
  292. width: 100vw;
  293. height: 100vh;
  294. top: 0;
  295. left: 0;
  296. display: block;
  297. opacity: 1;
  298. padding: 10px;
  299. }
  300. div.modal-prompt .form {
  301. z-index: 5;
  302. margin: auto auto;
  303. margin-top: 10%;
  304. width: 100%;
  305. max-width: 400px;
  306. padding: 20px 10px;
  307. background: white;
  308. box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px;
  309. border-radius: 3px;
  310. }
  311. div.modal-prompt .form img.close-btn {
  312. right: 10px;
  313. top: 10px;
  314. position: absolute;
  315. }
  316. section.dialog.form {
  317. padding-top: 30px;
  318. }
  319. section.centered {
  320. margin-top: 25%;
  321. }
  322. section.special {
  323. border: 2px solid var(--outline);
  324. border-radius: 3px;
  325. padding: 25px 10px;
  326. }
  327. section.mi .row {
  328. width: 100%;
  329. display: flex;
  330. gap: 10px;
  331. }
  332. section.mi .row input[type=checkbox] {
  333. margin-right: 0;
  334. }
  335. .loading span.error {
  336. top: 40px;
  337. position: absolute;
  338. }
  339. label.error {
  340. color: var(--text-important);
  341. }
  342. section.estimates .entry {
  343. padding: 10px 3px;
  344. border-bottom: 2px solid var(--outline);
  345. border-radius: 3px;
  346. }
  347. section.estimates .entry:hover {
  348. cursor: pointer;
  349. }
  350. section.estimates .details {
  351. display: flex;
  352. flex-flow: column;
  353. gap: 10px;
  354. }
  355. canvas.displayer {
  356. margin: auto;
  357. }