cents/docs/原型图/原型样式.css

836 lines
12 KiB
CSS

:root {
color: #101827;
background:
radial-gradient(circle at 12% 0%, rgba(255, 122, 89, 0.28), transparent 30%),
radial-gradient(circle at 92% 8%, rgba(45, 212, 191, 0.24), transparent 32%),
linear-gradient(135deg, #fff3e8 0%, #ecfeff 48%, #fff1f8 100%);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
line-height: 1.5;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 320px;
}
button,
input {
font: inherit;
}
.stage {
min-height: 100vh;
display: grid;
place-items: start center;
padding: 24px;
}
.phone {
width: min(100%, 390px);
height: 780px;
min-height: 780px;
overflow: hidden;
border: 1px solid rgba(20, 83, 45, 0.12);
border-radius: 28px;
background: #ffffff;
box-shadow: 0 24px 58px rgba(15, 23, 42, 0.14);
}
.appbar {
background: linear-gradient(135deg, #00a676 0%, #00b4d8 52%, #ff7a59 100%);
color: #fff;
padding: 18px 18px 14px;
}
.toolbar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.title {
margin: 0;
font-size: 20px;
font-weight: 750;
letter-spacing: 0;
}
.icon-button {
width: 36px;
height: 36px;
display: grid;
place-items: center;
border: 0;
border-radius: 18px;
background: rgba(255, 255, 255, 0.22);
color: inherit;
font-size: 26px;
line-height: 1;
}
.toolbar-spacer {
width: 36px;
height: 36px;
}
.icon {
width: 18px;
height: 18px;
display: block;
}
.deprecated-note {
margin: 24px 14px;
border: 1px solid #bdeee0;
border-radius: 8px;
padding: 16px;
background: #ffffff;
}
.deprecated-note h2 {
margin: 0 0 8px;
font-size: 18px;
}
.deprecated-note p {
margin: 0 0 12px;
color: #526072;
}
.deprecated-note a {
color: #007a78;
font-weight: 800;
}
.stats {
display: grid;
grid-template-columns: 1fr 1.2fr 1fr;
gap: 12px;
margin-top: 20px;
text-align: center;
}
.stat strong {
display: block;
font-size: 20px;
}
.stat span {
color: rgba(255, 255, 255, 0.76);
font-size: 12px;
}
.content {
padding: 14px 14px 2px;
}
.phone-relative .content {
padding-bottom: 250px;
}
.section-title {
margin: 14px 2px 8px;
color: #0f5f68;
font-size: 13px;
font-weight: 650;
}
.ledger-card {
border: 1px solid #d8f1e7;
border-radius: 8px;
padding: 14px;
background: #ffffff;
}
.ledger-card + .ledger-card {
margin-top: 10px;
}
.ledger-head,
.row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.ledger-name {
margin: 0;
font-size: 19px;
line-height: 1.2;
}
.badge {
display: inline-flex;
align-items: center;
min-height: 24px;
padding: 0 9px;
border-radius: 12px;
background: #d7fbef;
color: #007a5a;
font-size: 12px;
font-weight: 700;
white-space: nowrap;
}
.muted {
color: #526072;
font-size: 13px;
}
.card-actions {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
margin-top: 14px;
border-top: 1px solid #dff5ee;
padding-top: 12px;
}
.action {
min-height: 36px;
border: 1px solid #ccefe5;
border-radius: 8px;
background: #fff;
color: #152033;
}
.day {
margin: 14px -14px 0;
padding: 7px 16px;
background: #e9fbf7;
color: #0f5f68;
font-size: 12px;
font-weight: 700;
}
.entry {
display: grid;
grid-template-columns: 40px 1fr auto;
gap: 10px;
align-items: center;
min-height: 62px;
border-bottom: 1px solid #e0f4ed;
}
.entry-icon {
width: 34px;
height: 34px;
display: grid;
place-items: center;
border-radius: 17px;
background: #00a676;
color: #fff;
font-size: 13px;
font-weight: 750;
}
.entry-main strong,
.entry-amount strong {
display: block;
}
.entry-main span,
.entry-amount span {
color: #526072;
font-size: 12px;
}
.entry-amount {
text-align: right;
}
.expense {
color: #d94836;
}
.income {
color: #008f5f;
}
.fab {
position: absolute;
right: 24px;
bottom: 24px;
width: 56px;
height: 56px;
border: 0;
border-radius: 28px;
background: #00a676;
color: #fff;
font-size: 28px;
box-shadow: 0 8px 24px rgba(0, 166, 118, 0.28);
}
.phone-relative {
position: relative;
}
.drawer-scrim {
position: absolute;
inset: 0;
z-index: 2;
background: linear-gradient(to bottom, rgba(15, 23, 42, 0.02), rgba(15, 23, 42, 0.2));
pointer-events: none;
}
.entry-drawer {
position: absolute;
right: 0;
bottom: 0;
left: 0;
z-index: 3;
min-height: 292px;
overflow: hidden;
border-top: 1px solid #bdeee0;
border-radius: 18px 18px 0 0;
background: #ffffff;
box-shadow: 0 -18px 36px rgba(15, 23, 42, 0.16);
}
.drawer-handle {
width: 42px;
height: 5px;
margin: 9px auto 0;
border-radius: 999px;
background: #8ee8d4;
}
.drawer-amount-line {
padding-top: 12px;
padding-bottom: 8px;
}
.radial-step {
position: relative;
width: 176px;
height: 118px;
margin-left: auto;
}
.radial-center,
.radial-node {
position: absolute;
z-index: 1;
border: 1px solid transparent;
border-radius: 999px;
display: grid;
place-items: center;
box-shadow: 0 8px 18px rgba(15, 23, 42, 0.08);
font-weight: 800;
white-space: nowrap;
}
.radial-center {
right: 0;
bottom: 0;
width: 54px;
height: 54px;
border: 0;
background: #00a676;
color: #fff;
font-size: 20px;
}
.radial-node {
min-width: 48px;
height: 34px;
padding: 0 10px;
background: #ffffff;
color: #101827;
font-size: 12px;
}
.radial-node.active {
border-color: #ffb703;
background: #fff0bf;
color: #9b4d00;
}
.type-expense {
right: 68px;
bottom: 8px;
}
.type-income {
right: 34px;
bottom: 70px;
}
.category-food {
right: 88px;
bottom: 4px;
border-color: #ffbf87;
}
.category-transit {
right: 104px;
bottom: 48px;
border-color: #93c5fd;
}
.category-daily {
right: 54px;
bottom: 82px;
border-color: #86efac;
}
.category-shop {
right: 0;
bottom: 96px;
border-color: #f9a8d4;
}
.sub-takeout {
right: 86px;
bottom: 8px;
}
.sub-restaurant {
right: 92px;
bottom: 54px;
}
.sub-coffee {
right: 40px;
bottom: 88px;
}
.selection-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 0 14px 10px;
}
.selected-path {
display: flex;
align-items: center;
min-width: 0;
flex-wrap: wrap;
gap: 5px;
padding: 0;
color: #0f5f68;
font-size: 12px;
font-weight: 750;
}
.selected-path span + span::before,
.selected-path span + strong::before {
content: ">";
margin-right: 5px;
color: #00a676;
}
.selected-path span,
.selected-path strong {
min-height: 24px;
border-radius: 12px;
padding: 3px 8px;
background: #e6fbf8;
}
.selected-path strong {
background: #fff0bf;
color: #9b4d00;
}
.drawer-note-line {
padding-bottom: 10px;
}
.flow-stage {
width: min(100%, 1180px);
margin: 0 auto;
padding: 28px 20px 48px;
}
.flow-intro {
margin-bottom: 20px;
}
.flow-intro h1 {
margin: 0 0 6px;
font-size: 26px;
line-height: 1.15;
}
.flow-intro p {
margin: 0;
color: #526072;
}
.flow-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(252px, 1fr));
gap: 18px;
align-items: start;
}
.flow-phone {
width: 100%;
height: 470px;
min-height: 470px;
border-radius: 20px;
}
.mini-appbar {
min-height: 58px;
padding: 12px 14px;
display: flex;
align-items: center;
gap: 10px;
background: linear-gradient(135deg, #00a676 0%, #00b4d8 100%);
color: #fff;
}
.mini-appbar span {
width: 28px;
height: 28px;
border-radius: 14px;
display: grid;
place-items: center;
background: rgba(255, 255, 255, 0.22);
font-weight: 850;
}
.drawer-demo {
position: relative;
min-height: 412px;
background: #ffffff;
}
.floating-choice {
position: absolute;
right: 7px;
bottom: 150px;
z-index: 4;
padding: 10px;
border: 1px solid rgba(189, 238, 224, 0.86);
border-radius: 16px;
background: rgba(255, 255, 255, 0.94);
box-shadow: 0 14px 34px rgba(15, 23, 42, 0.16);
}
.mini-keypad {
display: grid;
grid-template-columns: repeat(4, 1fr);
margin-top: 8px;
border-top: 1px solid #bdeee0;
}
.mini-keypad span,
.mini-keypad strong {
min-height: 38px;
border-right: 1px solid #d7f5ec;
border-bottom: 1px solid #d7f5ec;
display: grid;
place-items: center;
font-size: 14px;
}
.mini-keypad span:nth-child(4n) {
border-right: 0;
background: #e6fbf8;
color: #007a78;
}
.mini-keypad strong {
border-right: 0;
background: #00a676;
color: #fff;
}
.mini-keypad .category-cell {
background: #fff0bf;
color: #9b4d00;
font-weight: 800;
}
.mini-keypad .confirm-cell {
background: #00a676;
color: #fff;
}
.active-picker {
margin-top: 170px;
}
.bottom-panel {
margin-top: 18px;
border-top: 1px solid #d7f5ec;
background: #ffffff;
}
.amount-line {
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
padding: 16px;
}
.amount-line strong {
font-size: 34px;
line-height: 1;
}
.amount-meta {
display: grid;
justify-items: end;
gap: 7px;
min-width: max-content;
}
.toggle {
min-width: 58px;
min-height: 34px;
border: 0;
border-radius: 17px;
background: #ff5a47;
color: #fff;
font-weight: 750;
}
.date-pill {
min-height: 28px;
border: 1px solid #ffc56d;
border-radius: 14px;
padding: 0 10px;
background: #fff2cc;
color: #a45100;
font-size: 12px;
font-weight: 750;
}
.chips {
display: flex;
gap: 8px;
overflow-x: auto;
padding: 0 14px 12px;
scrollbar-width: none;
}
.chips::-webkit-scrollbar {
display: none;
}
.chip {
min-width: max-content;
min-height: 34px;
border: 1px solid #bdeee0;
border-radius: 17px;
padding: 0 12px;
display: inline-flex;
align-items: center;
gap: 6px;
background: #ffffff;
color: #115e59;
}
.chip.active {
border-color: #ffb703;
background: #fff0bf;
color: #9b4d00;
font-weight: 750;
}
.category-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 8px;
padding-bottom: 12px;
}
.category {
min-width: 0;
min-height: 78px;
border: 1px solid transparent;
border-radius: 8px;
padding: 8px 4px 7px;
display: grid;
justify-items: center;
align-content: center;
gap: 6px;
background: #fff;
color: #101827;
box-shadow: 0 8px 18px rgba(15, 23, 42, 0.06);
}
.category span:last-child {
font-size: 12px;
font-weight: 700;
line-height: 1.1;
}
.category-mark {
width: 38px;
height: 38px;
border-radius: 19px;
display: grid;
place-items: center;
color: #fff;
font-size: 17px;
font-weight: 850;
}
.category.food {
border-color: #ffbf87;
background: #fff1e4;
}
.category.food .category-mark {
background: #ff6b35;
}
.category.daily {
border-color: #86efac;
background: #ecfdf3;
}
.category.daily .category-mark {
background: #16a34a;
}
.category.transit {
border-color: #93c5fd;
background: #eff6ff;
}
.category.transit .category-mark {
background: #2563eb;
}
.category.shopping {
border-color: #f9a8d4;
background: #fdf2f8;
}
.category.shopping .category-mark {
background: #e84393;
}
.category.income {
border-color: #bef264;
background: #f7fee7;
}
.category.income .category-mark {
background: #65a30d;
}
.category.active {
outline: 2px solid #00a676;
outline-offset: 0;
}
.note-line {
padding: 0 14px 12px;
}
.note-line input {
min-height: 42px;
width: 100%;
border: 1px solid #bdeee0;
border-radius: 8px;
padding: 0 12px;
background: #ffffff;
}
.chip-dot {
width: 7px;
height: 7px;
border-radius: 50%;
background: currentColor;
opacity: 0.75;
}
.keypad {
display: grid;
grid-template-columns: repeat(4, 1fr);
border-top: 1px solid #bdeee0;
}
.key {
min-height: 58px;
border: 0;
border-right: 1px solid #d7f5ec;
border-bottom: 1px solid #d7f5ec;
background: #ffffff;
color: #101827;
font-size: 20px;
font-weight: 650;
}
.key:nth-child(4n) {
border-right: 0;
background: #e6fbf8;
color: #007a78;
}
.key:active {
background: #c9f7ef;
}
.commit-key {
background: #00a676 !important;
color: #fff !important;
}
.utility-key {
font-size: 16px;
}
.category-key {
font-size: 16px;
background: #fff0bf !important;
color: #9b4d00 !important;
}
.invite-box {
border: 1px dashed #86dfca;
border-radius: 8px;
padding: 14px;
background: #ffffff;
}
.member {
display: grid;
grid-template-columns: 38px 1fr auto;
gap: 10px;
align-items: center;
min-height: 58px;
border-bottom: 1px solid #d7f5ec;
}
.avatar {
width: 36px;
height: 36px;
display: grid;
place-items: center;
border-radius: 18px;
background: #d7fbef;
color: #007a5a;
font-weight: 800;
}
@media (max-width: 430px) {
.stage {
padding: 0;
}
.phone {
height: 100vh;
min-height: 100vh;
border: 0;
border-radius: 0;
box-shadow: none;
}
}