diff --git a/components.js b/components.js index 597580d..87d457f 100644 --- a/components.js +++ b/components.js @@ -1382,8 +1382,8 @@ class SquareLoader extends HTMLElement { }).append(spinner.content.cloneNode(true)) } } - window.customElements.define('sm-spinner', SquareLoader); + const themeToggle = document.createElement('template') themeToggle.innerHTML = ` @@ -1688,4 +1683,354 @@ customElements.define('sm-copy', disconnectedCallback() { this.copyButton.removeEventListener('click', this.copy) } - }) \ No newline at end of file + }) +const stripSelect = document.createElement('template') +stripSelect.innerHTML = ` + +
+
+ +
+ +
+ +
+
+ +` +customElements.define('strip-select', class extends HTMLElement { + constructor() { + super() + this.attachShadow({ + mode: 'open' + }).append(stripSelect.content.cloneNode(true)) + this.stripSelect = this.shadowRoot.querySelector('.strip-select') + this.slottedOptions + this._value + this.scrollDistance + + this.scrollLeft = this.scrollLeft.bind(this) + this.scrollRight = this.scrollRight.bind(this) + this.fireEvent = this.fireEvent.bind(this) + } + get value() { + return this._value + } + scrollLeft() { + this.stripSelect.scrollBy({ + left: -this.scrollDistance, + behavior: 'smooth' + }) + } + + scrollRight() { + this.stripSelect.scrollBy({ + left: this.scrollDistance, + behavior: 'smooth' + }) + } + fireEvent() { + this.dispatchEvent( + new CustomEvent("change", { + bubbles: true, + composed: true, + detail: { + value: this._value + } + }) + ) + } + connectedCallback() { + this.setAttribute('role', 'listbox') + + const slot = this.shadowRoot.querySelector('slot') + const coverLeft = this.shadowRoot.querySelector('.cover--left') + const coverRight = this.shadowRoot.querySelector('.cover--right') + const navButtonLeft = this.shadowRoot.querySelector('.nav-button--left') + const navButtonRight = this.shadowRoot.querySelector('.nav-button--right') + slot.addEventListener('slotchange', e => { + const assignedElements = slot.assignedElements() + assignedElements.forEach(elem => { + if (elem.hasAttribute('selected')) { + elem.setAttribute('active', '') + this._value = elem.value + } + }) + if (!this.hasAttribute('multiline')) { + if (assignedElements.length > 0) { + firstOptionObserver.observe(slot.assignedElements()[0]) + lastOptionObserver.observe(slot.assignedElements()[slot.assignedElements().length - 1]) + } + else { + navButtonLeft.classList.add('hide') + navButtonRight.classList.add('hide') + coverLeft.classList.add('hide') + coverRight.classList.add('hide') + firstOptionObserver.disconnect() + lastOptionObserver.disconnect() + } + } + }) + const resObs = new ResizeObserver(entries => { + entries.forEach(entry => { + if (entry.contentBoxSize) { + // Firefox implements `contentBoxSize` as a single content rect, rather than an array + const contentBoxSize = Array.isArray(entry.contentBoxSize) ? entry.contentBoxSize[0] : entry.contentBoxSize; + + this.scrollDistance = contentBoxSize.inlineSize * 0.6 + } else { + this.scrollDistance = entry.contentRect.width * 0.6 + } + }) + }) + resObs.observe(this) + this.stripSelect.addEventListener('option-clicked', e => { + if (this._value !== e.target.value) { + this._value = e.target.value + slot.assignedElements().forEach(elem => elem.removeAttribute('active')) + e.target.setAttribute('active', '') + e.target.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "center" }) + this.fireEvent() + } + }) + const firstOptionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + navButtonLeft.classList.add('hide') + coverLeft.classList.add('hide') + } + else { + navButtonLeft.classList.remove('hide') + coverLeft.classList.remove('hide') + } + }) + }, + { + threshold: 0.9, + root: this + }) + const lastOptionObserver = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + navButtonRight.classList.add('hide') + coverRight.classList.add('hide') + } + else { + navButtonRight.classList.remove('hide') + coverRight.classList.remove('hide') + } + }) + }, + { + threshold: 0.9, + root: this + }) + navButtonLeft.addEventListener('click', this.scrollLeft) + navButtonRight.addEventListener('click', this.scrollRight) + } + disconnectedCallback() { + navButtonLeft.removeEventListener('click', this.scrollLeft) + navButtonRight.removeEventListener('click', this.scrollRight) + } +}) + +//Strip option +const stripOption = document.createElement('template') +stripOption.innerHTML = ` + + +` +customElements.define('strip-option', class extends HTMLElement { + constructor() { + super() + this.attachShadow({ + mode: 'open' + }).append(stripOption.content.cloneNode(true)) + this._value + this.radioButton = this.shadowRoot.querySelector('input') + + this.fireEvent = this.fireEvent.bind(this) + this.handleKeyDown = this.handleKeyDown.bind(this) + } + get value() { + return this._value + } + fireEvent() { + this.dispatchEvent( + new CustomEvent("option-clicked", { + bubbles: true, + composed: true, + detail: { + value: this._value + } + }) + ) + } + handleKeyDown(e) { + if (e.key === 'Enter' || e.key === 'Space') { + this.fireEvent() + } + } + connectedCallback() { + this.setAttribute('role', 'option') + this.setAttribute('tabindex', '0') + this._value = this.getAttribute('value') + this.addEventListener('click', this.fireEvent) + this.addEventListener('keydown', this.handleKeyDown) + } + disconnectedCallback() { + this.removeEventListener('click', this.fireEvent) + this.removeEventListener('keydown', this.handleKeyDown) + } +}) \ No newline at end of file diff --git a/css/main.css b/css/main.css index f421d1a..78920b6 100644 --- a/css/main.css +++ b/css/main.css @@ -91,11 +91,11 @@ button, } .button { - padding: 0.4rem 0.6rem; + padding: 0.6rem 1rem; border-radius: 0.3rem; font-weight: 500; font-size: 0.8rem; - border: solid thin rgba(var(--text-color), 0.5); + background-color: rgba(var(--text-color), 0.06); } button:disabled { @@ -148,11 +148,6 @@ ul { display: none !important; } -.no-transformations { - -webkit-transform: none !important; - transform: none !important; -} - .overflow-ellipsis { width: 100%; overflow: hidden; @@ -316,15 +311,6 @@ ul { width: 100%; } -.ripple { - position: absolute; - border-radius: 50%; - -webkit-transform: scale(0); - transform: scale(0); - background: rgba(var(--text-color), 0.16); - pointer-events: none; -} - .interact { position: relative; cursor: pointer; @@ -369,29 +355,24 @@ ul { fill: var(--accent-color); } -#confirmation_popup, -#prompt_popup { +#confirmation_popup { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } -#confirmation_popup h4, -#prompt_popup h4 { +#confirmation_popup h4 { font-weight: 500; margin-bottom: 0.5rem; } -#confirmation_popup sm-button, -#prompt_popup sm-button { +#confirmation_popup sm-button { margin: 0; } -#confirmation_popup .flex, -#prompt_popup .flex { +#confirmation_popup .flex { padding: 0; margin-top: 1rem; } -#confirmation_popup .flex sm-button:first-of-type, -#prompt_popup .flex sm-button:first-of-type { +#confirmation_popup .flex sm-button:first-of-type { margin-right: 0.6rem; margin-left: auto; } @@ -607,10 +588,41 @@ details[open] > summary .icon { font-weight: 500; } -#recent_transactions_container { - display: grid; - margin: 1.5rem 0; - padding-bottom: 5rem; +strip-select { + --gap: 0; + background-color: rgba(var(--text-color), 0.06); + border-radius: 0.3rem; +} + +#accounts_empty_state { + margin-top: 3rem; + justify-items: center; + text-align: center; +} +#accounts_empty_state .empty-state__icon { + -webkit-filter: drop-shadow(0 0.5rem 0.3rem rgba(0, 0, 0, 0.1)); + filter: drop-shadow(0 0.5rem 0.3rem rgba(0, 0, 0, 0.1)); + height: 12rem; + width: 12rem; + padding: 3rem; + border-radius: 50%; + margin-bottom: 1.5rem; + background-color: rgba(var(--text-color), 0.06); +} + +strip-option { + text-transform: uppercase; + font-weight: 500; + letter-spacing: 0.05em; + font-size: 0.7rem; + --active-option-color: rgba(var(--background-color), 1); + --active-option-backgroud-color: var(--accent-color); +} +strip-option:first-of-type { + --border-radius: 0.3rem 0 0 0.3rem; +} +strip-option:last-of-type { + --border-radius: 0 0.3rem 0.3rem 0; } .activity-card { @@ -663,12 +675,11 @@ details[open] > summary .icon { padding: 1rem 1.5rem; } -#user_accounts { +#user_accounts:not(:empty) { margin-top: 1.5rem; display: grid; gap: 1rem; padding-bottom: 5rem; - grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); } .activity-card--account { @@ -677,24 +688,25 @@ details[open] > summary .icon { -ms-user-select: none; user-select: none; gap: 1.5rem; - padding: 1.5rem; - background-color: var(--foreground-color); + padding: 1rem 1.5rem; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; border: solid thin rgba(var(--text-color), 0.2); - grid-template-columns: minmax(0, 1fr); } .activity-card--account .activity-card__icon { padding: 0; - margin-bottom: 0.5rem; background-color: transparent; } .activity-card--account .activity-card__type { + text-transform: capitalize; font-size: 0.9rem; - color: rgba(var(--text-color), 0.6); + color: rgba(var(--text-color), 0.8); font-weight: 500; } .activity-card--account .activity-card__amount { margin-top: 0.3rem; - font-size: 1.3rem; + font-size: 1.1rem; } .activity-card--request { @@ -887,6 +899,10 @@ details[open] > summary .icon { font-weight: 700; } +.page__header button { + padding: 0.5rem 0; +} + #transaction, #account { grid-template-rows: auto 1fr; @@ -898,13 +914,9 @@ details[open] > summary .icon { #transaction section, #account_details { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + display: grid; + gap: 2rem; + grid-template-rows: auto 1fr; } #transaction_top, @@ -948,10 +960,8 @@ details[open] > summary .icon { font-weight: 700; } -#transaction_detail__time { - font-size: 0.8rem; - color: rgba(var(--text-color), 0.8); - margin-right: 1rem; +#transaction__cta { + margin-top: 2rem; } #account_process { @@ -1075,6 +1085,7 @@ details[open] > summary .icon { align-items: center; } #result__icon { + position: relative; display: -webkit-box; display: -ms-flexbox; display: flex; @@ -1084,6 +1095,12 @@ details[open] > summary .icon { -webkit-animation: pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275); animation: pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275); } +#result__icon.pending { + background-color: rgba(255, 252, 75, 0.1); +} +#result__icon.failed { + background-color: rgba(255, 75, 75, 0.1); +} #result__icon .icon { height: 1.8rem; width: 1.8rem; @@ -1128,6 +1145,14 @@ details[open] > summary .icon { transform: none; } } +#settings { + padding: 0 1.5rem; +} +#settings sm-copy { + font-size: 0.9rem; + margin: 0.3rem 0 1.5rem 0; +} + @media screen and (max-width: 640px) { sm-button { --padding: 1rem; @@ -1167,13 +1192,13 @@ details[open] > summary .icon { margin-top: auto; } - #account_process { - margin-top: 3rem; + #transaction_top, +#account_top { + margin-top: 1rem; } } @media screen and (min-width: 640px) { - #confirmation_popup, -#prompt_popup { + #confirmation_popup { --width: 24rem; } @@ -1225,15 +1250,16 @@ details[open] > summary .icon { #transaction_top, #account_top, -#account_process { +#account_process, +#transaction__steps { overflow: hidden; padding: 1.8rem; border-radius: 0.5rem; - border: solid thin rgba(var(--text-color), 0.2); - } - - #transaction_detail__status { - justify-self: flex-start; + background-color: var(--foreground-color); + -webkit-box-shadow: 0 0 0.1rem rgba(0, 0, 0, 0.1), 0 1rem 1.5rem -0.8rem rgba(0, 0, 0, 0.1); + box-shadow: 0 0 0.1rem rgba(0, 0, 0, 0.1), 0 1rem 1.5rem -0.8rem rgba(0, 0, 0, 0.1); + -ms-flex-item-align: start; + align-self: flex-start; } #transaction_detail__icon { @@ -1255,7 +1281,7 @@ details[open] > summary .icon { } .card { - padding: 2rem; + padding: 1.5rem; } #homepage { @@ -1274,8 +1300,6 @@ details[open] > summary .icon { #transaction section, #account_details { - display: grid; - gap: 1.5rem; grid-template-columns: 18rem minmax(0, 1fr); } } diff --git a/css/main.min.css b/css/main.min.css index c9eb0e7..70bfd53 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -*{padding:0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:"Roboto",sans-serif}:root{font-size:clamp(1rem, 1.2vmax, 3rem)}html,body{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color), 1);background:rgba(var(--background-color), 1)}body,body *{--accent-color: #2672ff;--accent-color--light: rgba(38, 114, 255, 0.06);--text-color: 36, 36, 36;--background-color: 247, 250, 255;--foreground-color: rgb(250, 252, 255);--danger-color: rgb(255, 75, 75);--green: #1cad59;--yellow: #f3a600;scrollbar-width:thin}body[data-theme=dark],body[data-theme=dark] *{--accent-color: rgb(170, 190, 255);--accent-color--light: rgba(231, 239, 255, 0.06);--text-color: 230, 230, 230;--text-color-light: 170, 170, 170;--background-color: 10, 10, 10;--foreground-color: rgb(20, 20, 20);--danger-color: rgb(255, 106, 106);--green: #00e676;--yellow: #ffd13a}p{font-size:.9rem;max-width:70ch;line-height:1.7;color:rgba(var(--text-color), 0.8)}p:not(:last-of-type){margin-bottom:1.5rem}a:where([class]){color:inherit;text-decoration:none}a:where([class]):focus-visible{-webkit-box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset;box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset}a{color:var(--accent-color)}button,.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.button{padding:.4rem .6rem;border-radius:.3rem;font-weight:500;font-size:.8rem;border:solid thin rgba(var(--text-color), 0.5)}button:disabled{opacity:.5}a:-webkit-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:-moz-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}sm-button{--border-radius: 0.5rem;--padding: 0.8rem 1rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color), 1)}sm-button[disabled] .icon{fill:rgba(var(--text-color), 0.6)}ul{list-style:none}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.grid{display:grid}.hide{opacity:0;pointer-events:none}.hide-completely{display:none !important}.no-transformations{-webkit-transform:none !important;transform:none !important}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.grid{display:grid}.grid-3{grid-template-columns:1fr auto auto}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.text-center{text-align:center}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-right{margin-left:auto}.align-self-center{-ms-flex-item-align:center;align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.stretch{-webkit-box-pack:stretch;-ms-flex-pack:stretch;justify-content:stretch;justify-items:stretch}.stretch>*{width:100%}.ripple{position:absolute;border-radius:50%;-webkit-transform:scale(0);transform:scale(0);background:rgba(var(--text-color), 0.16);pointer-events:none}.interact{position:relative;cursor:pointer;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;-webkit-tap-highlight-color:transparent}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.2rem;height:1.2rem;fill:rgba(var(--text-color), 0.8)}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}.icon-button{padding:.6rem;border-radius:.8rem;background-color:var(--accent-color--light)}.icon-button .icon{fill:var(--accent-color)}#confirmation_popup,#prompt_popup{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}button:active,.button:active,.interact:active,.nav-item:active{-webkit-transform:scale(0.96);transform:scale(0.96)}#main_page{padding:1.5rem}#main_page>section:nth-of-type(1){-ms-flex-line-pack:start;align-content:flex-start}#logo{display:grid;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;grid-template-columns:auto 1fr;gap:0 .3rem;margin-right:1rem}#logo h4{text-transform:capitalize;font-size:1rem;font-weight:600}#logo #main_logo{height:1.4rem;width:1.4rem;fill:rgba(var(--text-color), 1);stroke:none}details summary{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}details[open]>summary{margin-bottom:1rem}details[open]>summary .icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.card{padding:1rem;border-radius:.5rem;background-color:var(--accent-color--light)}.page-layout{display:grid;grid-template-columns:1.5rem minmax(0, 1fr) 1.5rem}.page-layout>*{grid-column:2/3}.page{height:100%}#sign_in,#sign_up{place-items:center}#sign_in section,#sign_up section{width:min(24rem, 100%)}#sign_in sm-form,#sign_up sm-form{margin:2rem 0}#sign_up sm-copy{font-size:.9rem;--button-border-radius: 0.5rem}#sign_up .h2{margin-bottom:.5rem}#sign_up .card{margin:1.5rem 0}#sign_up h5{font-weight:500;color:rgba(var(--text-color), 0.8)}#loading{place-content:center;text-align:center}#loading sm-spinner{margin-bottom:1.5rem}#homepage{height:100%;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0, 1fr);grid-template-areas:"main-header" "subpages" "main-nav"}#main_nav{grid-area:main-nav;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.nav-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.8rem;border-radius:.5rem;color:inherit;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.nav-item--active .icon{fill:var(--accent-color)}.nav-item--active .nav-item__title{color:var(--accent-color)}#main_header{grid-area:main-header;padding:1.5rem;display:grid;gap:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;grid-template-columns:1fr auto auto}#subpage_container{grid-area:subpages;overflow-y:auto}#dashboard{display:grid;gap:1.5rem;padding:0 1.5rem}#quick_actions_container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:1.5rem;margin:2rem 0}.quick-action{color:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.quick-action__icon{padding:1rem;border-radius:1rem;background-color:var(--accent-color--light);margin-bottom:.8rem}.quick-action__icon .icon{height:1.5rem;width:1.5rem;fill:var(--accent-color)}.quick-action__title{font-size:.8rem;font-weight:500}#recent_transactions_container{display:grid;margin:1.5rem 0;padding-bottom:5rem}.activity-card{display:grid;padding:1rem 0;gap:.4rem 1rem;border-radius:.5rem;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;color:inherit;grid-template-columns:auto minmax(0, 1fr) auto}.activity-card__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem;border-radius:.8rem;background-color:var(--accent-color--light)}.activity-card__icon .icon{height:1.3rem;width:1.3rem;fill:var(--accent-color)}.activity-card__title{font-size:.95rem;font-weight:500}.activity-card__title::first-letter{text-transform:uppercase}.activity-card__time{font-size:.8rem;color:rgba(var(--text-color), 0.8)}#notifications,#history{padding-bottom:5rem}#notifications .activity-card,#history .activity-card{padding:1rem 1.5rem}#user_accounts{margin-top:1.5rem;display:grid;gap:1rem;padding-bottom:5rem;grid-template-columns:repeat(auto-fill, minmax(12rem, 1fr))}.activity-card--account{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;gap:1.5rem;padding:1.5rem;background-color:var(--foreground-color);border:solid thin rgba(var(--text-color), 0.2);grid-template-columns:minmax(0, 1fr)}.activity-card--account .activity-card__icon{padding:0;margin-bottom:.5rem;background-color:transparent}.activity-card--account .activity-card__type{font-size:.9rem;color:rgba(var(--text-color), 0.6);font-weight:500}.activity-card--account .activity-card__amount{margin-top:.3rem;font-size:1.3rem}.activity-card--request{grid-template-areas:"icon . amount" "icon time ."}.activity-card--request .activity-card__icon{grid-area:icon}.activity-card--request .activity-card__time{grid-area:time}.activity-card--request .activity-card__amount{grid-area:amount;text-align:end}.status-tag:not(:empty){text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;border-radius:.2rem;padding:.3rem .4rem;font-weight:500;color:rgba(0,0,0,.7)}.status-tag:not(:empty) .icon{margin-right:.3rem}.status-tag:not(:empty).active{color:var(--green);background-color:rgba(0,230,118,.1)}.status-tag:not(:empty).closed{color:rgba(var(--text-color), 0.7);background-color:rgba(var(--text-color), 0.06)}.status-tag:not(:empty).success{color:var(--green);background-color:rgba(0,230,118,.1)}.status-tag:not(:empty).success .icon{fill:var(--green)}.status-tag:not(:empty).failed{color:var(--danger-color);background-color:rgba(255,75,75,.1)}.status-tag:not(:empty).failed .icon{fill:var(--danger-color)}.status-tag:not(:empty).pending{color:var(--yellow);background-color:rgba(255,252,75,.1)}.status-tag:not(:empty).pending .icon{fill:var(--yellow)}.activity-card--response{grid-template-areas:"icon . time" "icon description description"}.activity-card--response .activity-card__icon{grid-area:icon}.activity-card--response .activity-card__description{grid-area:description;font-size:.8rem;color:rgba(var(--text-color), 0.8)}.activity-card--response .activity-card__time{grid-area:time}.success .icon{fill:var(--green)}.failed .icon{fill:var(--danger-color)}.pending .icon{fill:var(--yellow)}#user_section{display:grid;-ms-flex-line-pack:start;align-content:flex-start;gap:2rem;overflow-y:auto;padding:1.5rem;grid-template-columns:minmax(0, 1fr)}#user_section h4{margin-bottom:1rem}#account_chart_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:15rem;padding-bottom:3rem;margin:1.5rem 0}#chart_legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:1rem}.legend{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.8rem;margin-right:1rem;margin-bottom:1rem}.legend::before{content:"";margin-right:.5rem;width:1rem;height:1rem;border-radius:25%}.legend:nth-of-type(1)::before{background-color:var(--green)}.legend:nth-of-type(2)::before{background-color:#ffbb61}.balance-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon ." "icon .";padding:1rem 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:.3rem 1rem;border-radius:.5rem}.balance-card__icon{grid-area:icon;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem;border-radius:.8rem;background-color:var(--accent-color--light)}.balance-card__icon .icon{height:1.3rem;width:1.3rem;fill:var(--accent-color)}.balance-card__token{font-size:.8rem}.balance-card__amount{font-size:1rem;font-weight:700}#transaction,#account{grid-template-rows:auto 1fr;gap:1.5rem 0;padding:1.5rem 0;-ms-flex-line-pack:start;align-content:flex-start}#transaction section,#account_details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#transaction_top,#account_top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;justify-items:flex-start;position:relative}#transaction_detail__icon,#account_detail__icon{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:var(--accent-color);border-radius:40%;padding:.8rem;justify-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}#transaction_detail__icon .icon,#account_detail__icon .icon{height:1.5rem;width:1.5rem;fill:rgba(var(--background-color), 1)}#transaction_detail__amount,#account_detail__amount{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;font-weight:700}#transaction_detail__time{font-size:.8rem;color:rgba(var(--text-color), 0.8);margin-right:1rem}#account_process{display:grid;-ms-flex-line-pack:start;align-content:flex-start;gap:2rem}.account-step{opacity:0;grid-template-columns:auto minmax(0, 1fr);gap:.3rem .8rem;-webkit-animation:slide-down .3s forwards;animation:slide-down .3s forwards}.account-step:nth-of-type(2){-webkit-animation-delay:.1s;animation-delay:.1s}.account-step:nth-of-type(3){-webkit-animation-delay:.2s;animation-delay:.2s}.account-step:nth-of-type(4){-webkit-animation-delay:.3s;animation-delay:.3s}.account-step sm-spinner{--height: 1rem;--width: 1rem}.account-step:not(:last-of-type) .step__line{position:relative;height:3rem;width:.1rem;margin:.5rem 0 1rem 0;justify-self:center;background-color:var(--green)}.account-step .icon{height:1.5rem;width:1.5rem}.account-step:not(.loading) .step__title{font-weight:500;font-size:.9rem;padding:.2rem 0}.account-step .step__description{font-size:.8rem}@-webkit-keyframes slide-down{from{opacity:0;-webkit-transform:translateY(-1rem);transform:translateY(-1rem)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes slide-down{from{opacity:0;-webkit-transform:translateY(-1rem);transform:translateY(-1rem)}to{opacity:1;-webkit-transform:none;transform:none}}#deposit,#loan{padding:1.5rem 0;grid-template-rows:auto 1fr}#deposit sm-form,#loan sm-form{justify-self:center;margin-top:3rem;width:min(24rem, 100%)}#deposit sm-form::part(form),#loan sm-form::part(form){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#deposit__icon .icon,#loan__icon .icon{height:1.8rem;width:1.8rem;fill:var(--accent-color)}#get_deposit_amount,#get_loan_amount{--font-size: 1.5rem;margin-top:1rem}#result{place-content:center}#result section{text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#result__icon{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:50%;padding:1rem;margin:-5rem 0 1.5rem 0;-webkit-animation:pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275);animation:pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275)}#result__icon .icon{height:1.8rem;width:1.8rem}#result__description{margin:.5rem 0}#result__back_button{margin-top:3rem}@-webkit-keyframes pop-in{0%{opacity:0;-webkit-transform:scale(0.4) translateY(6rem);transform:scale(0.4) translateY(6rem)}40%{opacity:1;-webkit-transform:scale(0.4) translateY(0);transform:scale(0.4) translateY(0)}100%{-webkit-transform:none;transform:none}}@keyframes pop-in{0%{opacity:0;-webkit-transform:scale(0.4) translateY(6rem);transform:scale(0.4) translateY(6rem)}40%{opacity:1;-webkit-transform:scale(0.4) translateY(0);transform:scale(0.4) translateY(0)}100%{-webkit-transform:none;transform:none}}@media screen and (max-width: 640px){sm-button{--padding: 1rem}#dashboard{padding:0 1.5rem}#main_nav{border-radius:1rem 1rem 0 0;background-color:var(--foreground-color)}.nav-item{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.nav-item__title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.7rem;font-weight:500;color:rgba(var(--text-color), 0.8);margin-top:.3rem}#transaction_action_button,#account_action_button,#deposit_button{margin-top:auto}#account_process{margin-top:3rem}}@media screen and (min-width: 640px){#confirmation_popup,#prompt_popup{--width: 24rem}.page-layout{grid-template-columns:1fr 90vw 1fr}#homepage{background-color:var(--foreground-color);grid-template-rows:auto 1fr;grid-template-columns:auto minmax(0, 1fr);grid-template-areas:"main-header main-header user-section" "main-nav subpages user-section"}#main_nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:0 1rem}#main_nav::after{position:absolute;right:0;content:"";width:1px;background-color:rgba(var(--text-color), 0.3);height:80%}.nav-item--active{background-color:var(--accent-color--light)}.nav-item:not(:last-of-type){margin-bottom:.5rem}.nav-item:last-of-type{margin-top:auto;margin-bottom:1.5rem}.nav-item__title{display:none}#user_section{grid-area:user-section;background-color:rgba(var(--background-color), 1)}#transaction_top,#account_top,#account_process{overflow:hidden;padding:1.8rem;border-radius:.5rem;border:solid thin rgba(var(--text-color), 0.2)}#transaction_detail__status{justify-self:flex-start}#transaction_detail__icon{justify-self:flex-start}}@media screen and (max-width: 1024px){#user_section{position:fixed;background-color:rgba(var(--background-color), 1);z-index:2;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media screen and (min-width: 1024px){.page-layout{grid-template-columns:1fr 80vw 1fr}.card{padding:2rem}#homepage{grid-template-columns:14rem minmax(0, 1fr) 24rem}.nav-item__title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9rem;font-weight:500;color:rgba(var(--text-color), 0.8);margin-left:.5rem}#transaction section,#account_details{display:grid;gap:1.5rem;grid-template-columns:18rem minmax(0, 1fr)}}@media screen and (min-width: 1920px){.page-layout{grid-template-columns:1fr 70vw 1fr}}@media(any-hover: hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color), 0.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color), 0.5)}.nav-item,.interact{-webkit-transition:background-color .3s,-webkit-transform .3s;transition:background-color .3s,-webkit-transform .3s;transition:background-color .3s,transform .3s;transition:background-color .3s,transform .3s,-webkit-transform .3s}.nav-item:hover,.interact:hover{background-color:var(--accent-color--light)}} \ No newline at end of file +*{padding:0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:"Roboto",sans-serif}:root{font-size:clamp(1rem, 1.2vmax, 3rem)}html,body{height:100%;scroll-behavior:smooth}body{color:rgba(var(--text-color), 1);background:rgba(var(--background-color), 1)}body,body *{--accent-color: #2672ff;--accent-color--light: rgba(38, 114, 255, 0.06);--text-color: 36, 36, 36;--background-color: 247, 250, 255;--foreground-color: rgb(250, 252, 255);--danger-color: rgb(255, 75, 75);--green: #1cad59;--yellow: #f3a600;scrollbar-width:thin}body[data-theme=dark],body[data-theme=dark] *{--accent-color: rgb(170, 190, 255);--accent-color--light: rgba(231, 239, 255, 0.06);--text-color: 230, 230, 230;--text-color-light: 170, 170, 170;--background-color: 10, 10, 10;--foreground-color: rgb(20, 20, 20);--danger-color: rgb(255, 106, 106);--green: #00e676;--yellow: #ffd13a}p{font-size:.9rem;max-width:70ch;line-height:1.7;color:rgba(var(--text-color), 0.8)}p:not(:last-of-type){margin-bottom:1.5rem}a:where([class]){color:inherit;text-decoration:none}a:where([class]):focus-visible{-webkit-box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset;box-shadow:0 0 0 .1rem rgba(var(--text-color), 1) inset}a{color:var(--accent-color)}button,.button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;border:none;background-color:transparent;overflow:hidden;color:inherit;cursor:pointer;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.button{padding:.6rem 1rem;border-radius:.3rem;font-weight:500;font-size:.8rem;background-color:rgba(var(--text-color), 0.06)}button:disabled{opacity:.5}a:-webkit-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:-moz-any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}a:any-link:focus-visible{outline:rgba(var(--text-color), 1) .1rem solid}sm-button{--border-radius: 0.5rem;--padding: 0.8rem 1rem}sm-button[variant=primary] .icon{fill:rgba(var(--background-color), 1)}sm-button[disabled] .icon{fill:rgba(var(--text-color), 0.6)}ul{list-style:none}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.grid{display:grid}.hide{opacity:0;pointer-events:none}.hide-completely{display:none !important}.overflow-ellipsis{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.breakable{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.full-bleed{grid-column:1/4}.h1{font-size:2.5rem}.h2{font-size:2rem}.h3{font-size:1.4rem}.h4{font-size:1rem}.h5{font-size:.8rem}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.grid{display:grid}.grid-3{grid-template-columns:1fr auto auto}.flow-column{grid-auto-flow:column}.gap-0-5{gap:.5rem}.gap-1{gap:1rem}.gap-1-5{gap:1.5rem}.gap-2{gap:2rem}.gap-3{gap:3rem}.text-align-right{text-align:right}.align-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.text-center{text-align:center}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-right{margin-left:auto}.align-self-center{-ms-flex-item-align:center;align-self:center}.justify-self-center{justify-self:center}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.stretch{-webkit-box-pack:stretch;-ms-flex-pack:stretch;justify-content:stretch;justify-items:stretch}.stretch>*{width:100%}.interact{position:relative;cursor:pointer;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;-webkit-tap-highlight-color:transparent}.observe-empty-state:empty{display:none}.observe-empty-state:not(:empty)~.empty-state{display:none}.icon{width:1.2rem;height:1.2rem;fill:rgba(var(--text-color), 0.8)}.button__icon{height:1.2rem;width:1.2rem}.button__icon--left{margin-right:.5rem}.button__icon--right{margin-left:.5rem}.icon-button{padding:.6rem;border-radius:.8rem;background-color:var(--accent-color--light)}.icon-button .icon{fill:var(--accent-color)}#confirmation_popup{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#confirmation_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button{margin:0}#confirmation_popup .flex{padding:0;margin-top:1rem}#confirmation_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}button:active,.button:active,.interact:active,.nav-item:active{-webkit-transform:scale(0.96);transform:scale(0.96)}#main_page{padding:1.5rem}#main_page>section:nth-of-type(1){-ms-flex-line-pack:start;align-content:flex-start}#logo{display:grid;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;grid-template-columns:auto 1fr;gap:0 .3rem;margin-right:1rem}#logo h4{text-transform:capitalize;font-size:1rem;font-weight:600}#logo #main_logo{height:1.4rem;width:1.4rem;fill:rgba(var(--text-color), 1);stroke:none}details summary{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}details[open]>summary{margin-bottom:1rem}details[open]>summary .icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.card{padding:1rem;border-radius:.5rem;background-color:var(--accent-color--light)}.page-layout{display:grid;grid-template-columns:1.5rem minmax(0, 1fr) 1.5rem}.page-layout>*{grid-column:2/3}.page{height:100%}#sign_in,#sign_up{place-items:center}#sign_in section,#sign_up section{width:min(24rem, 100%)}#sign_in sm-form,#sign_up sm-form{margin:2rem 0}#sign_up sm-copy{font-size:.9rem;--button-border-radius: 0.5rem}#sign_up .h2{margin-bottom:.5rem}#sign_up .card{margin:1.5rem 0}#sign_up h5{font-weight:500;color:rgba(var(--text-color), 0.8)}#loading{place-content:center;text-align:center}#loading sm-spinner{margin-bottom:1.5rem}#homepage{height:100%;display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0, 1fr);grid-template-areas:"main-header" "subpages" "main-nav"}#main_nav{grid-area:main-nav;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex}.nav-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.8rem;border-radius:.5rem;color:inherit;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.nav-item--active .icon{fill:var(--accent-color)}.nav-item--active .nav-item__title{color:var(--accent-color)}#main_header{grid-area:main-header;padding:1.5rem;display:grid;gap:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;grid-template-columns:1fr auto auto}#subpage_container{grid-area:subpages;overflow-y:auto}#dashboard{display:grid;gap:1.5rem;padding:0 1.5rem}#quick_actions_container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:1.5rem;margin:2rem 0}.quick-action{color:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.quick-action__icon{padding:1rem;border-radius:1rem;background-color:var(--accent-color--light);margin-bottom:.8rem}.quick-action__icon .icon{height:1.5rem;width:1.5rem;fill:var(--accent-color)}.quick-action__title{font-size:.8rem;font-weight:500}strip-select{--gap: 0;background-color:rgba(var(--text-color), 0.06);border-radius:.3rem}#accounts_empty_state{margin-top:3rem;justify-items:center;text-align:center}#accounts_empty_state .empty-state__icon{-webkit-filter:drop-shadow(0 0.5rem 0.3rem rgba(0, 0, 0, 0.1));filter:drop-shadow(0 0.5rem 0.3rem rgba(0, 0, 0, 0.1));height:12rem;width:12rem;padding:3rem;border-radius:50%;margin-bottom:1.5rem;background-color:rgba(var(--text-color), 0.06)}strip-option{text-transform:uppercase;font-weight:500;letter-spacing:.05em;font-size:.7rem;--active-option-color: rgba(var(--background-color), 1);--active-option-backgroud-color: var(--accent-color)}strip-option:first-of-type{--border-radius: 0.3rem 0 0 0.3rem}strip-option:last-of-type{--border-radius: 0 0.3rem 0.3rem 0}.activity-card{display:grid;padding:1rem 0;gap:.4rem 1rem;border-radius:.5rem;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;color:inherit;grid-template-columns:auto minmax(0, 1fr) auto}.activity-card__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem;border-radius:.8rem;background-color:var(--accent-color--light)}.activity-card__icon .icon{height:1.3rem;width:1.3rem;fill:var(--accent-color)}.activity-card__title{font-size:.95rem;font-weight:500}.activity-card__title::first-letter{text-transform:uppercase}.activity-card__time{font-size:.8rem;color:rgba(var(--text-color), 0.8)}#notifications,#history{padding-bottom:5rem}#notifications .activity-card,#history .activity-card{padding:1rem 1.5rem}#user_accounts:not(:empty){margin-top:1.5rem;display:grid;gap:1rem;padding-bottom:5rem}.activity-card--account{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;gap:1.5rem;padding:1rem 1.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:solid thin rgba(var(--text-color), 0.2)}.activity-card--account .activity-card__icon{padding:0;background-color:transparent}.activity-card--account .activity-card__type{text-transform:capitalize;font-size:.9rem;color:rgba(var(--text-color), 0.8);font-weight:500}.activity-card--account .activity-card__amount{margin-top:.3rem;font-size:1.1rem}.activity-card--request{grid-template-areas:"icon . amount" "icon time ."}.activity-card--request .activity-card__icon{grid-area:icon}.activity-card--request .activity-card__time{grid-area:time}.activity-card--request .activity-card__amount{grid-area:amount;text-align:end}.status-tag:not(:empty){text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;border-radius:.2rem;padding:.3rem .4rem;font-weight:500;color:rgba(0,0,0,.7)}.status-tag:not(:empty) .icon{margin-right:.3rem}.status-tag:not(:empty).active{color:var(--green);background-color:rgba(0,230,118,.1)}.status-tag:not(:empty).closed{color:rgba(var(--text-color), 0.7);background-color:rgba(var(--text-color), 0.06)}.status-tag:not(:empty).success{color:var(--green);background-color:rgba(0,230,118,.1)}.status-tag:not(:empty).success .icon{fill:var(--green)}.status-tag:not(:empty).failed{color:var(--danger-color);background-color:rgba(255,75,75,.1)}.status-tag:not(:empty).failed .icon{fill:var(--danger-color)}.status-tag:not(:empty).pending{color:var(--yellow);background-color:rgba(255,252,75,.1)}.status-tag:not(:empty).pending .icon{fill:var(--yellow)}.activity-card--response{grid-template-areas:"icon . time" "icon description description"}.activity-card--response .activity-card__icon{grid-area:icon}.activity-card--response .activity-card__description{grid-area:description;font-size:.8rem;color:rgba(var(--text-color), 0.8)}.activity-card--response .activity-card__time{grid-area:time}.success .icon{fill:var(--green)}.failed .icon{fill:var(--danger-color)}.pending .icon{fill:var(--yellow)}#user_section{display:grid;-ms-flex-line-pack:start;align-content:flex-start;gap:2rem;overflow-y:auto;padding:1.5rem;grid-template-columns:minmax(0, 1fr)}#user_section h4{margin-bottom:1rem}#account_chart_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:15rem;padding-bottom:3rem;margin:1.5rem 0}#chart_legend{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:1rem}.legend{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.8rem;margin-right:1rem;margin-bottom:1rem}.legend::before{content:"";margin-right:.5rem;width:1rem;height:1rem;border-radius:25%}.legend:nth-of-type(1)::before{background-color:var(--green)}.legend:nth-of-type(2)::before{background-color:#ffbb61}.balance-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"icon ." "icon .";padding:1rem 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:.3rem 1rem;border-radius:.5rem}.balance-card__icon{grid-area:icon;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem;border-radius:.8rem;background-color:var(--accent-color--light)}.balance-card__icon .icon{height:1.3rem;width:1.3rem;fill:var(--accent-color)}.balance-card__token{font-size:.8rem}.balance-card__amount{font-size:1rem;font-weight:700}.page__header button{padding:.5rem 0}#transaction,#account{grid-template-rows:auto 1fr;gap:1.5rem 0;padding:1.5rem 0;-ms-flex-line-pack:start;align-content:flex-start}#transaction section,#account_details{display:grid;gap:2rem;grid-template-rows:auto 1fr}#transaction_top,#account_top{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;justify-items:flex-start;position:relative}#transaction_detail__icon,#account_detail__icon{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:var(--accent-color);border-radius:40%;padding:.8rem;justify-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}#transaction_detail__icon .icon,#account_detail__icon .icon{height:1.5rem;width:1.5rem;fill:rgba(var(--background-color), 1)}#transaction_detail__amount,#account_detail__amount{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;font-weight:700}#transaction__cta{margin-top:2rem}#account_process{display:grid;-ms-flex-line-pack:start;align-content:flex-start;gap:2rem}.account-step{opacity:0;grid-template-columns:auto minmax(0, 1fr);gap:.3rem .8rem;-webkit-animation:slide-down .3s forwards;animation:slide-down .3s forwards}.account-step:nth-of-type(2){-webkit-animation-delay:.1s;animation-delay:.1s}.account-step:nth-of-type(3){-webkit-animation-delay:.2s;animation-delay:.2s}.account-step:nth-of-type(4){-webkit-animation-delay:.3s;animation-delay:.3s}.account-step sm-spinner{--height: 1rem;--width: 1rem}.account-step:not(:last-of-type) .step__line{position:relative;height:3rem;width:.1rem;margin:.5rem 0 1rem 0;justify-self:center;background-color:var(--green)}.account-step .icon{height:1.5rem;width:1.5rem}.account-step:not(.loading) .step__title{font-weight:500;font-size:.9rem;padding:.2rem 0}.account-step .step__description{font-size:.8rem}@-webkit-keyframes slide-down{from{opacity:0;-webkit-transform:translateY(-1rem);transform:translateY(-1rem)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes slide-down{from{opacity:0;-webkit-transform:translateY(-1rem);transform:translateY(-1rem)}to{opacity:1;-webkit-transform:none;transform:none}}#deposit,#loan{padding:1.5rem 0;grid-template-rows:auto 1fr}#deposit sm-form,#loan sm-form{justify-self:center;margin-top:3rem;width:min(24rem, 100%)}#deposit sm-form::part(form),#loan sm-form::part(form){display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#deposit__icon .icon,#loan__icon .icon{height:1.8rem;width:1.8rem;fill:var(--accent-color)}#get_deposit_amount,#get_loan_amount{--font-size: 1.5rem;margin-top:1rem}#result{place-content:center}#result section{text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#result__icon{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:50%;padding:1rem;margin:-5rem 0 1.5rem 0;-webkit-animation:pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275);animation:pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275)}#result__icon.pending{background-color:rgba(255,252,75,.1)}#result__icon.failed{background-color:rgba(255,75,75,.1)}#result__icon .icon{height:1.8rem;width:1.8rem}#result__description{margin:.5rem 0}#result__back_button{margin-top:3rem}@-webkit-keyframes pop-in{0%{opacity:0;-webkit-transform:scale(0.4) translateY(6rem);transform:scale(0.4) translateY(6rem)}40%{opacity:1;-webkit-transform:scale(0.4) translateY(0);transform:scale(0.4) translateY(0)}100%{-webkit-transform:none;transform:none}}@keyframes pop-in{0%{opacity:0;-webkit-transform:scale(0.4) translateY(6rem);transform:scale(0.4) translateY(6rem)}40%{opacity:1;-webkit-transform:scale(0.4) translateY(0);transform:scale(0.4) translateY(0)}100%{-webkit-transform:none;transform:none}}#settings{padding:0 1.5rem}#settings sm-copy{font-size:.9rem;margin:.3rem 0 1.5rem 0}@media screen and (max-width: 640px){sm-button{--padding: 1rem}#dashboard{padding:0 1.5rem}#main_nav{border-radius:1rem 1rem 0 0;background-color:var(--foreground-color)}.nav-item{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.nav-item__title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.7rem;font-weight:500;color:rgba(var(--text-color), 0.8);margin-top:.3rem}#transaction_action_button,#account_action_button,#deposit_button{margin-top:auto}#transaction_top,#account_top{margin-top:1rem}}@media screen and (min-width: 640px){#confirmation_popup{--width: 24rem}.page-layout{grid-template-columns:1fr 90vw 1fr}#homepage{background-color:var(--foreground-color);grid-template-rows:auto 1fr;grid-template-columns:auto minmax(0, 1fr);grid-template-areas:"main-header main-header user-section" "main-nav subpages user-section"}#main_nav{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:0 1rem}#main_nav::after{position:absolute;right:0;content:"";width:1px;background-color:rgba(var(--text-color), 0.3);height:80%}.nav-item--active{background-color:var(--accent-color--light)}.nav-item:not(:last-of-type){margin-bottom:.5rem}.nav-item:last-of-type{margin-top:auto;margin-bottom:1.5rem}.nav-item__title{display:none}#user_section{grid-area:user-section;background-color:rgba(var(--background-color), 1)}#transaction_top,#account_top,#account_process,#transaction__steps{overflow:hidden;padding:1.8rem;border-radius:.5rem;background-color:var(--foreground-color);-webkit-box-shadow:0 0 .1rem rgba(0,0,0,.1),0 1rem 1.5rem -0.8rem rgba(0,0,0,.1);box-shadow:0 0 .1rem rgba(0,0,0,.1),0 1rem 1.5rem -0.8rem rgba(0,0,0,.1);-ms-flex-item-align:start;align-self:flex-start}#transaction_detail__icon{justify-self:flex-start}}@media screen and (max-width: 1024px){#user_section{position:fixed;background-color:rgba(var(--background-color), 1);z-index:2;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media screen and (min-width: 1024px){.page-layout{grid-template-columns:1fr 80vw 1fr}.card{padding:1.5rem}#homepage{grid-template-columns:14rem minmax(0, 1fr) 24rem}.nav-item__title{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.9rem;font-weight:500;color:rgba(var(--text-color), 0.8);margin-left:.5rem}#transaction section,#account_details{grid-template-columns:18rem minmax(0, 1fr)}}@media screen and (min-width: 1920px){.page-layout{grid-template-columns:1fr 70vw 1fr}}@media(any-hover: hover){::-webkit-scrollbar{width:.5rem;height:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color), 0.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color), 0.5)}.nav-item,.interact{-webkit-transition:background-color .3s,-webkit-transform .3s;transition:background-color .3s,-webkit-transform .3s;transition:background-color .3s,transform .3s;transition:background-color .3s,transform .3s,-webkit-transform .3s}.nav-item:hover,.interact:hover{background-color:var(--accent-color--light)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index 93a6651..bdc8ad2 100644 --- a/css/main.scss +++ b/css/main.scss @@ -85,11 +85,11 @@ button, transition: transform 0.3s; } .button { - padding: 0.4rem 0.6rem; + padding: 0.6rem 1rem; border-radius: 0.3rem; font-weight: 500; font-size: 0.8rem; - border: solid thin rgba(var(--text-color), 0.5); + background-color: rgba(var(--text-color), 0.06); } button:disabled { @@ -137,10 +137,6 @@ ul { display: none !important; } -.no-transformations { - transform: none !important; -} - .overflow-ellipsis { width: 100%; overflow: hidden; @@ -288,14 +284,6 @@ ul { } } -.ripple { - position: absolute; - border-radius: 50%; - transform: scale(0); - background: rgba(var(--text-color), 0.16); - pointer-events: none; -} - .interact { position: relative; cursor: pointer; @@ -338,8 +326,7 @@ ul { fill: var(--accent-color); } } -#confirmation_popup, -#prompt_popup { +#confirmation_popup { flex-direction: column; h4 { @@ -532,10 +519,38 @@ details { font-weight: 500; } } -#recent_transactions_container { - display: grid; - margin: 1.5rem 0; - padding-bottom: 5rem; +strip-select { + --gap: 0; + background-color: rgba(var(--text-color), 0.06); + border-radius: 0.3rem; +} +#accounts_empty_state { + margin-top: 3rem; + justify-items: center; + text-align: center; + .empty-state__icon { + filter: drop-shadow(0 0.5rem 0.3rem rgba(0, 0, 0, 0.1)); + height: 12rem; + width: 12rem; + padding: 3rem; + border-radius: 50%; + margin-bottom: 1.5rem; + background-color: rgba(var(--text-color), 0.06); + } +} +strip-option { + text-transform: uppercase; + font-weight: 500; + letter-spacing: 0.05em; + font-size: 0.7rem; + --active-option-color: rgba(var(--background-color), 1); + --active-option-backgroud-color: var(--accent-color); + &:first-of-type { + --border-radius: 0.3rem 0 0 0.3rem; + } + &:last-of-type { + --border-radius: 0 0.3rem 0.3rem 0; + } } .activity-card { display: grid; @@ -577,33 +592,31 @@ details { padding: 1rem 1.5rem; } } -#user_accounts { +#user_accounts:not(:empty) { margin-top: 1.5rem; display: grid; gap: 1rem; padding-bottom: 5rem; - grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr)); } .activity-card--account { user-select: none; gap: 1.5rem; - padding: 1.5rem; - background-color: var(--foreground-color); + padding: 1rem 1.5rem; + align-items: center; border: solid thin rgba(var(--text-color), 0.2); - grid-template-columns: minmax(0, 1fr); .activity-card__icon { padding: 0; - margin-bottom: 0.5rem; background-color: transparent; } .activity-card__type { + text-transform: capitalize; font-size: 0.9rem; - color: rgba(var(--text-color), 0.6); + color: rgba(var(--text-color), 0.8); font-weight: 500; } .activity-card__amount { margin-top: 0.3rem; - font-size: 1.3rem; + font-size: 1.1rem; } } .activity-card--request { @@ -770,6 +783,13 @@ details { font-weight: 700; } } + +.page__header { + button { + padding: 0.5rem 0; + } +} + #transaction, #account { grid-template-rows: auto 1fr; @@ -779,8 +799,9 @@ details { } #transaction section, #account_details { - display: flex; - flex-direction: column; + display: grid; + gap: 2rem; + grid-template-rows: auto 1fr; } #transaction_top, #account_top { @@ -809,10 +830,8 @@ details { font-size: 1.8rem; font-weight: 700; } -#transaction_detail__time { - font-size: 0.8rem; - color: rgba(var(--text-color), 0.8); - margin-right: 1rem; +#transaction__cta { + margin-top: 2rem; } #account_process { @@ -906,10 +925,17 @@ details { align-items: center; } &__icon { + position: relative; display: flex; border-radius: 50%; padding: 1rem; margin: -5rem 0 1.5rem 0; + &.pending { + background-color: rgba(255, 252, 75, 0.1); + } + &.failed { + background-color: rgb(255, 75, 75, 0.1); + } animation: pop-in 1s forwards cubic-bezier(0.175, 0.885, 0.32, 1.275); .icon { height: 1.8rem; @@ -936,6 +962,13 @@ details { transform: none; } } +#settings { + padding: 0 1.5rem; + sm-copy { + font-size: 0.9rem; + margin: 0.3rem 0 1.5rem 0; + } +} @media screen and (max-width: 640px) { sm-button { --padding: 1rem; @@ -963,13 +996,13 @@ details { #deposit_button { margin-top: auto; } - #account_process { - margin-top: 3rem; + #transaction_top, + #account_top { + margin-top: 1rem; } } @media screen and (min-width: 640px) { - #confirmation_popup, - #prompt_popup { + #confirmation_popup { --width: 24rem; } .page-layout { @@ -1015,16 +1048,15 @@ details { } #transaction_top, #account_top, - #account_process { + #account_process, + #transaction__steps { overflow: hidden; padding: 1.8rem; border-radius: 0.5rem; - border: solid thin rgba(var(--text-color), 0.2); - // background-color: var(--foreground-color); - // box-shadow: 0 0 0.1rem rgba(0, 0, 0, 0.1), 0 1rem 1.5rem -0.8rem rgba(0, 0, 0, 0.1); - } - #transaction_detail__status { - justify-self: flex-start; + background-color: var(--foreground-color); + box-shadow: 0 0 0.1rem rgba(0, 0, 0, 0.1), + 0 1rem 1.5rem -0.8rem rgba(0, 0, 0, 0.1); + align-self: flex-start; } #transaction_detail__icon { justify-self: flex-start; @@ -1043,7 +1075,7 @@ details { grid-template-columns: 1fr 80vw 1fr; } .card { - padding: 2rem; + padding: 1.5rem; } #homepage { grid-template-columns: 14rem minmax(0, 1fr) 24rem; @@ -1059,8 +1091,6 @@ details { } #transaction section, #account_details { - display: grid; - gap: 1.5rem; grid-template-columns: 18rem minmax(0, 1fr); } } diff --git a/illustrations/empty_accounts.svg b/illustrations/empty_accounts.svg new file mode 100644 index 0000000..63d4208 --- /dev/null +++ b/illustrations/empty_accounts.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/illustrations/no_account.svg b/illustrations/no_account.svg new file mode 100644 index 0000000..da766c2 --- /dev/null +++ b/illustrations/no_account.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html index 6a68d16..a6a6d07 100644 --- a/index.html +++ b/index.html @@ -56,15 +56,6 @@ OK - -

-

- -
- Cancel - OK -
-

Sign In

@@ -206,14 +197,42 @@ Accounts + + Active + Closed +
-

No accounts so far.

+
+
+ + + + + + + + + + +
+

Nothing to see here

+

Make a deposit or take a loan and it'll appear here. +

@@ -225,6 +244,8 @@

No notifications so far.

+
My FLO ID
+ Sign out
@@ -310,13 +331,13 @@
- +
- +
@@ -367,20 +388,23 @@
-
+

Done
- +
@@ -388,21 +412,21 @@

-
- -
-
+
- +
@@ -439,15 +463,12 @@