736 lines
13 KiB
CSS
736 lines
13 KiB
CSS
:root {
|
|
--fami-primary: #0fe3d4;
|
|
--fami-primary-strong: #0ccfc2;
|
|
--fami-bg: #f5f5f5;
|
|
--fami-surface: #ffffff;
|
|
--fami-text: #333333;
|
|
--fami-copy: #5c5a4b;
|
|
--fami-muted: #878787;
|
|
--fami-disabled: #e4e4e4;
|
|
--fami-disabled-text: #b1b1b1;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
width: 100%;
|
|
min-height: 100%;
|
|
margin: 0;
|
|
-webkit-font-smoothing: antialiased;
|
|
-webkit-tap-highlight-color: transparent;
|
|
-webkit-text-size-adjust: 100%;
|
|
}
|
|
|
|
body {
|
|
display: flex;
|
|
justify-content: center;
|
|
overflow-x: hidden;
|
|
background: #111111;
|
|
color: var(--fami-text);
|
|
font-family:
|
|
-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display',
|
|
'Segoe UI', Helvetica, Arial, sans-serif;
|
|
}
|
|
|
|
button,
|
|
input {
|
|
font: inherit;
|
|
}
|
|
|
|
button {
|
|
margin: 0;
|
|
border: 0;
|
|
padding: 0;
|
|
background: transparent;
|
|
color: inherit;
|
|
}
|
|
|
|
button,
|
|
[role='button'] {
|
|
cursor: pointer;
|
|
}
|
|
|
|
button:focus,
|
|
input:focus {
|
|
outline: none;
|
|
}
|
|
|
|
button:focus-visible,
|
|
input:focus-visible {
|
|
outline: 2px solid rgba(15, 227, 212, 0.55);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
[hidden] {
|
|
display: none !important;
|
|
}
|
|
|
|
img.is-empty {
|
|
background: var(--fami-disabled);
|
|
}
|
|
|
|
body.modal-open {
|
|
overflow: hidden;
|
|
}
|
|
|
|
.fami-page {
|
|
position: relative;
|
|
width: 100%;
|
|
max-width: 375px;
|
|
min-height: max(812px, 100dvh);
|
|
overflow-x: hidden;
|
|
background: var(--fami-bg);
|
|
}
|
|
|
|
.fami-status-bar {
|
|
position: absolute;
|
|
z-index: 10;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 44px;
|
|
background: #ffffff;
|
|
direction: ltr;
|
|
}
|
|
|
|
.fami-status-time {
|
|
position: absolute;
|
|
top: 13px;
|
|
left: 33.867px;
|
|
width: 54px;
|
|
height: 15px;
|
|
color: #000000;
|
|
font-family: Helvetica, Arial, sans-serif;
|
|
font-size: 15px;
|
|
font-weight: 400;
|
|
line-height: 15px;
|
|
text-align: center;
|
|
}
|
|
|
|
.fami-status-icon {
|
|
position: absolute;
|
|
display: block;
|
|
}
|
|
|
|
.fami-status-icon--cellular {
|
|
top: 15px;
|
|
right: 63.66px;
|
|
width: 17px;
|
|
height: 11.332px;
|
|
}
|
|
|
|
.fami-status-icon--wifi {
|
|
top: 16.327px;
|
|
right: 43.33px;
|
|
width: 15.333px;
|
|
height: 11.007px;
|
|
}
|
|
|
|
.fami-status-icon--battery {
|
|
top: 16.335px;
|
|
right: 14px;
|
|
width: 24.331px;
|
|
height: 11.333px;
|
|
}
|
|
|
|
.fami-nav {
|
|
position: absolute;
|
|
z-index: 9;
|
|
top: 44px;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 44px;
|
|
background: #ffffff;
|
|
direction: ltr;
|
|
}
|
|
|
|
.fami-nav__back,
|
|
.fami-nav__language {
|
|
position: absolute;
|
|
top: 10px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
.fami-nav__back {
|
|
left: 12px;
|
|
}
|
|
|
|
.fami-nav__language {
|
|
right: 12px;
|
|
}
|
|
|
|
.fami-nav__back img,
|
|
.fami-nav__language img {
|
|
display: block;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
|
|
.fami-nav__title {
|
|
position: absolute;
|
|
top: 11px;
|
|
left: 50%;
|
|
margin: 0;
|
|
color: var(--fami-text);
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
line-height: 18px;
|
|
text-align: center;
|
|
text-transform: capitalize;
|
|
white-space: nowrap;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.language-switcher {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
width: 48px;
|
|
height: 44px;
|
|
}
|
|
|
|
.language-menu {
|
|
position: absolute;
|
|
z-index: 40;
|
|
top: 42px;
|
|
right: 8px;
|
|
display: grid;
|
|
gap: 2px;
|
|
width: 70px;
|
|
padding: 5px;
|
|
border: 1px solid rgba(51, 51, 51, 0.08);
|
|
border-radius: 8px;
|
|
background: #ffffff;
|
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.14);
|
|
}
|
|
|
|
.language-menu button {
|
|
min-height: 32px;
|
|
border-radius: 6px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.language-menu button.is-active {
|
|
background: rgba(15, 227, 212, 0.14);
|
|
color: #087d75;
|
|
}
|
|
|
|
.fami-card {
|
|
border-radius: 8px;
|
|
background: var(--fami-surface);
|
|
}
|
|
|
|
.fami-profile {
|
|
position: absolute;
|
|
top: 100px;
|
|
right: 12px;
|
|
left: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
height: 96px;
|
|
padding: 12px;
|
|
}
|
|
|
|
.fami-profile__avatar {
|
|
display: block;
|
|
flex: 0 0 auto;
|
|
width: 72px;
|
|
height: 72px;
|
|
border-radius: 8px;
|
|
object-fit: cover;
|
|
object-position: center 26%;
|
|
}
|
|
|
|
.fami-profile__avatar.is-round {
|
|
border-radius: 999px;
|
|
}
|
|
|
|
.fami-profile__copy,
|
|
.fami-contact__copy {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
color: var(--fami-text);
|
|
text-transform: capitalize;
|
|
}
|
|
|
|
.fami-profile__copy {
|
|
gap: 8px;
|
|
}
|
|
|
|
.fami-profile__name,
|
|
.fami-contact__name {
|
|
overflow: hidden;
|
|
width: 100%;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
line-height: 19px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-profile__meta,
|
|
.fami-contact__meta {
|
|
overflow: hidden;
|
|
width: 100%;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
line-height: 14px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-profile__note {
|
|
overflow: hidden;
|
|
width: 100%;
|
|
color: #b1b1b1;
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
line-height: 12px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-contact {
|
|
position: absolute;
|
|
top: 208px;
|
|
right: 12px;
|
|
left: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
height: 65px;
|
|
padding: 12px;
|
|
text-align: left;
|
|
}
|
|
|
|
.fami-contact__icon {
|
|
display: block;
|
|
flex: 0 0 auto;
|
|
width: 41px;
|
|
height: 41px;
|
|
}
|
|
|
|
.fami-contact__copy {
|
|
gap: 8px;
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
.fami-contact__edit {
|
|
display: block;
|
|
flex: 0 0 auto;
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
|
|
.fami-balance-card {
|
|
position: absolute;
|
|
top: 284px;
|
|
right: 16px;
|
|
left: 12px;
|
|
height: 99px;
|
|
overflow: hidden;
|
|
border-radius: 12px;
|
|
background: url('./assets/fami/balance-bg.svg') center / 100% 100% no-repeat;
|
|
}
|
|
|
|
.fami-balance-card__label {
|
|
position: absolute;
|
|
top: 12px;
|
|
left: 12px;
|
|
color: var(--fami-copy);
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
line-height: 20px;
|
|
letter-spacing: -0.56px;
|
|
text-transform: capitalize;
|
|
}
|
|
|
|
.fami-balance-card__value {
|
|
position: absolute;
|
|
top: 45px;
|
|
left: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
min-width: 180px;
|
|
height: 41px;
|
|
}
|
|
|
|
.fami-balance-card__value img {
|
|
display: block;
|
|
width: 41px;
|
|
height: 41px;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.fami-balance-card__value strong {
|
|
color: var(--fami-text);
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
line-height: 18px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-balance-card__withdraw {
|
|
position: absolute;
|
|
top: 62px;
|
|
right: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 89px;
|
|
height: 25px;
|
|
border-radius: 25px;
|
|
padding: 4px 12px;
|
|
background: var(--fami-primary);
|
|
color: #ffffff;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
line-height: 17px;
|
|
letter-spacing: -0.5px;
|
|
text-align: center;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-date-strip {
|
|
position: absolute;
|
|
right: 12px;
|
|
left: 12px;
|
|
display: flex;
|
|
align-items: center;
|
|
height: 24px;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
scrollbar-width: none;
|
|
scroll-snap-type: x proximity;
|
|
}
|
|
|
|
.fami-date-strip::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
.fami-date-strip__item {
|
|
position: relative;
|
|
flex: 0 0 49px;
|
|
height: 24px;
|
|
color: rgba(51, 51, 51, 0.4);
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
line-height: 20px;
|
|
text-align: center;
|
|
white-space: nowrap;
|
|
scroll-snap-align: center;
|
|
}
|
|
|
|
.fami-date-strip__item.is-active {
|
|
color: var(--fami-text);
|
|
}
|
|
|
|
.fami-date-strip__item:first-child {
|
|
flex-basis: 42px;
|
|
text-align: left;
|
|
}
|
|
|
|
.fami-date-strip__item + .fami-date-strip__item {
|
|
margin-left: 6px;
|
|
}
|
|
|
|
.fami-date-strip__item.is-active::after {
|
|
position: absolute;
|
|
right: 50%;
|
|
bottom: 0;
|
|
width: 14px;
|
|
height: 4px;
|
|
background: url('./assets/fami/underline.svg') center / 14px 4px no-repeat;
|
|
content: '';
|
|
transform: translateX(50%);
|
|
}
|
|
|
|
.fami-primary-button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 295px;
|
|
height: 56px;
|
|
border-radius: 37px;
|
|
background: var(--fami-primary);
|
|
color: #ffffff;
|
|
font-size: 18px;
|
|
font-weight: 700;
|
|
line-height: 22px;
|
|
text-align: center;
|
|
}
|
|
|
|
.fami-primary-button:active {
|
|
background: var(--fami-primary-strong);
|
|
}
|
|
|
|
.fami-primary-button:disabled,
|
|
.fami-primary-button.is-disabled {
|
|
background: var(--fami-disabled);
|
|
color: var(--fami-disabled-text);
|
|
}
|
|
|
|
.fami-primary-button__icon {
|
|
width: 32px;
|
|
height: 32px;
|
|
margin-right: 11px;
|
|
}
|
|
|
|
.fami-home-indicator {
|
|
position: fixed;
|
|
z-index: 8;
|
|
bottom: 0;
|
|
left: 50%;
|
|
width: min(100%, 375px);
|
|
height: 24px;
|
|
background: var(--fami-bg) url('./assets/fami/home-indicator.svg') center /
|
|
375px 24px no-repeat;
|
|
pointer-events: none;
|
|
transform: translateX(-50%);
|
|
}
|
|
|
|
.fami-empty {
|
|
color: var(--fami-muted);
|
|
font-size: 12px;
|
|
line-height: 18px;
|
|
text-align: center;
|
|
}
|
|
|
|
.fami-skeleton {
|
|
position: relative;
|
|
overflow: hidden;
|
|
color: transparent !important;
|
|
border-radius: 4px;
|
|
background: #ececec;
|
|
}
|
|
|
|
.fami-skeleton::after {
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(
|
|
90deg,
|
|
transparent,
|
|
rgba(255, 255, 255, 0.76),
|
|
transparent
|
|
);
|
|
content: '';
|
|
transform: translateX(-100%);
|
|
animation: fami-skeleton 1.2s infinite;
|
|
}
|
|
|
|
@keyframes fami-skeleton {
|
|
to {
|
|
transform: translateX(100%);
|
|
}
|
|
}
|
|
|
|
.fami-modal {
|
|
position: fixed;
|
|
z-index: 60;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: center;
|
|
}
|
|
|
|
.fami-modal__backdrop {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background: rgba(0, 0, 0, 0.42);
|
|
}
|
|
|
|
.fami-sheet {
|
|
position: relative;
|
|
z-index: 1;
|
|
width: min(100%, 375px);
|
|
max-height: 78dvh;
|
|
overflow-y: auto;
|
|
border-radius: 20px 20px 0 0;
|
|
padding: 20px 20px calc(24px + env(safe-area-inset-bottom));
|
|
background: #ffffff;
|
|
}
|
|
|
|
.fami-sheet__head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: 32px;
|
|
margin-bottom: 18px;
|
|
}
|
|
|
|
.fami-sheet__head h2 {
|
|
margin: 0;
|
|
color: var(--fami-text);
|
|
font-size: 18px;
|
|
font-weight: 700;
|
|
line-height: 24px;
|
|
}
|
|
|
|
.fami-sheet__close {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 50%;
|
|
background: #f1f1f1;
|
|
color: var(--fami-text);
|
|
font-size: 22px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.fami-field {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.fami-field > span {
|
|
color: var(--fami-copy);
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.fami-field input,
|
|
.fami-search-control input {
|
|
width: 100%;
|
|
height: 48px;
|
|
border: 1px solid #e8e8e8;
|
|
border-radius: 12px;
|
|
padding: 0 14px;
|
|
background: #f8f8f8;
|
|
color: var(--fami-text);
|
|
font-size: 15px;
|
|
}
|
|
|
|
.fami-search-control {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 8px;
|
|
}
|
|
|
|
.fami-search-control button {
|
|
min-width: 78px;
|
|
height: 48px;
|
|
border-radius: 12px;
|
|
padding: 0 14px;
|
|
background: var(--fami-primary);
|
|
color: #ffffff;
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.fami-sheet__action {
|
|
width: 100%;
|
|
height: 50px;
|
|
margin-top: 16px;
|
|
border-radius: 25px;
|
|
background: var(--fami-primary);
|
|
color: #ffffff;
|
|
font-size: 16px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.fami-sheet__action:disabled {
|
|
background: var(--fami-disabled);
|
|
color: var(--fami-disabled-text);
|
|
}
|
|
|
|
.fami-sheet__status {
|
|
margin-top: 10px;
|
|
color: #c73a4c;
|
|
font-size: 12px;
|
|
line-height: 18px;
|
|
}
|
|
|
|
.fami-sheet__status.is-success {
|
|
color: #09958b;
|
|
}
|
|
|
|
.fami-search-result {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
min-height: 76px;
|
|
margin-top: 14px;
|
|
border-radius: 8px;
|
|
padding: 12px;
|
|
background: var(--fami-bg);
|
|
}
|
|
|
|
.fami-search-result img {
|
|
width: 52px;
|
|
height: 52px;
|
|
border-radius: 50%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.fami-search-result__copy {
|
|
display: grid;
|
|
min-width: 0;
|
|
flex: 1;
|
|
gap: 6px;
|
|
}
|
|
|
|
.fami-search-result__copy strong {
|
|
overflow: hidden;
|
|
font-size: 15px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.fami-search-result__copy span {
|
|
color: var(--fami-copy);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.fami-search-result__action {
|
|
min-width: 66px;
|
|
height: 34px;
|
|
border-radius: 18px;
|
|
padding: 0 12px;
|
|
background: var(--fami-primary);
|
|
color: #ffffff;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
[dir='rtl'] .fami-contact {
|
|
text-align: right;
|
|
}
|
|
|
|
[dir='rtl'] .fami-profile__copy,
|
|
[dir='rtl'] .fami-contact__copy {
|
|
align-items: flex-end;
|
|
}
|
|
|
|
[dir='rtl'] .fami-primary-button__icon {
|
|
margin-right: 0;
|
|
margin-left: 11px;
|
|
}
|
|
|
|
@media (max-width: 374px) {
|
|
.fami-page {
|
|
min-height: 100dvh;
|
|
}
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.fami-skeleton::after {
|
|
animation: none;
|
|
}
|
|
}
|