Contractless-Web3-Wallets/extension/src/wallet.css

2077 lines
34 KiB
CSS
Raw Normal View History

:root {
--blue: #2167a5;
--blue-deep: #174d7c;
--ink: #13202a;
--muted-white: rgb(255 255 255 / 90%);
--danger: #b9382e;
--danger-soft: #fff0ee;
--success: #1d8054;
--dark: #0c151d;
--surface: #111e28;
--surface-raised: #172936;
--surface-active: #1b3547;
--dark-line: #314957;
--dark-muted: #c4d0d7;
--accent: #55c5dc;
font: 14px/1.45 Arial, Helvetica, sans-serif;
}
* { box-sizing: border-box; }
body {
width: 390px;
min-width: 390px;
min-height: 600px;
margin: 0;
background: var(--blue);
color: white;
}
button,
input,
textarea,
select { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: not-allowed; }
.wallet-shell {
position: relative;
width: 390px;
height: 600px;
overflow: hidden;
background: var(--blue);
}
.screen {
width: 100%;
height: 100%;
background: var(--blue);
}
.screen[hidden] { display: none; }
.wallet-header {
height: 72px;
display: flex;
align-items: center;
gap: 11px;
padding: 0 20px;
border-bottom: 1px solid rgb(255 255 255 / 70%);
}
.wallet-header img {
width: 37px;
filter: brightness(0) invert(1);
}
.wallet-header div { display: grid; }
.wallet-header strong { font-size: 18px; }
.wallet-header small { color: var(--muted-white); font-size: 14px; }
.wallet-header > span { margin-left: auto; font-size: 13px; font-weight: 700; }
.screen-content { padding: 28px 24px 22px; }
.screen-content.compact { padding-top: 18px; }
.eyebrow {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
}
h1 {
margin: 7px 0 9px;
font-size: 27px;
line-height: 1.12;
letter-spacing: 0;
}
.intro {
margin: 0 0 24px;
color: var(--muted-white);
line-height: 1.5;
}
label {
display: block;
margin-bottom: 8px;
font-size: 12px;
font-weight: 700;
}
.input-row {
height: 49px;
display: grid;
grid-template-columns: 1fr auto;
border: 1px solid white;
background: white;
}
.input-row:focus-within,
textarea:focus {
outline: 2px solid rgb(255 255 255 / 28%);
outline-offset: 2px;
}
.input-row input {
min-width: 0;
border: 0;
padding: 0 13px;
color: var(--ink);
outline: 0;
}
.reveal {
border: 0;
border-left: 1px solid #d9e0e5;
padding: 0 13px;
background: white;
color: var(--blue);
font-size: 11px;
font-weight: 700;
}
textarea {
width: 100%;
min-height: 82px;
margin-bottom: 13px;
resize: none;
border: 1px solid white;
padding: 11px 13px;
color: var(--ink);
outline: 0;
}
.note {
display: grid;
gap: 2px;
margin: 18px 0 23px;
border-left: 3px solid var(--accent);
padding: 13px;
background: var(--surface-raised);
color: white;
font-size: 12px;
}
.note span { color: var(--dark-muted); }
.compact-note { margin: 12px 0 14px; padding: 10px 13px; }
.warning {
margin: 18px 0 25px;
border-left: 3px solid var(--danger);
padding: 13px;
background: #321c20;
color: #ffbbb5;
font-size: 12px;
line-height: 1.4;
}
.warning strong { display: block; }
.primary,
.secondary {
width: 100%;
min-height: 48px;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
border: 1px solid var(--accent);
background: var(--accent);
color: #08202b;
font-weight: 700;
}
.primary span { font-size: 18px; }
.secondary {
min-height: 42px;
margin-top: 9px;
background: transparent;
color: #dcecf3;
font-size: 12px;
}
.secondary:disabled {
border-color: rgb(255 255 255 / 35%);
color: rgb(255 255 255 / 50%);
}
.text-button {
width: 100%;
margin-top: 8px;
border: 0;
padding: 8px;
background: transparent;
color: var(--muted-white);
}
.divider {
display: flex;
align-items: center;
gap: 10px;
margin: 17px 0 12px;
color: rgb(255 255 255 / 68%);
font-size: 12px;
text-transform: uppercase;
}
.divider::before,
.divider::after {
height: 1px;
flex: 1;
background: rgb(255 255 255 / 30%);
content: "";
}
.file-heading { margin-top: 20px; }
.file-picker {
min-height: 86px;
display: flex;
align-items: center;
gap: 13px;
margin-bottom: 24px;
border: 1px dashed rgb(255 255 255 / 72%);
padding: 14px;
background: rgb(255 255 255 / 10%);
cursor: pointer;
}
.file-picker > span:last-child { display: grid; gap: 4px; }
.file-picker small { color: rgb(255 255 255 / 68%); font-weight: 400; }
.file-icon {
width: 34px;
height: 34px;
display: grid;
flex: 0 0 34px;
place-items: center;
border: 1px solid white;
font-size: 22px;
font-weight: 400;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: nowrap;
}
.loading-screen {
position: relative;
}
.loading-brand {
position: absolute;
inset: 0;
display: grid;
place-content: center;
justify-items: center;
gap: 34px;
}
.loading-brand img,
.large-logo {
width: 148px;
filter: brightness(0) invert(1);
}
.spinner {
width: 28px;
aspect-ratio: 1;
border: 3px solid rgb(255 255 255 / 28%);
border-top-color: white;
border-radius: 50%;
animation: spin 0.85s linear infinite;
}
.loading-screen > p {
position: absolute;
bottom: 35px;
width: 100%;
margin: 0;
color: rgb(255 255 255 / 72%);
font-size: 12px;
text-align: center;
text-transform: uppercase;
}
@keyframes spin { to { transform: rotate(360deg); } }
.success-mark {
width: 38px;
height: 38px;
display: grid;
place-items: center;
border-radius: 50%;
border: 1px solid #55c98a;
background: #123727;
color: #66dfa0;
font-size: 22px;
font-weight: 700;
}
.image-preview {
position: relative;
height: 142px;
margin: 18px 0;
overflow: hidden;
border: 1px solid var(--dark-line);
background: var(--surface);
}
.image-preview img {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
}
.confirmation {
display: grid;
grid-template-columns: 18px 1fr;
gap: 9px;
align-items: start;
margin: 14px 0;
color: rgb(255 255 255 / 84%);
font-size: 11px;
line-height: 1.35;
}
.confirmation input { width: 16px; height: 16px; margin: 0; }
.centered-content {
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
padding: 36px 28px;
text-align: center;
}
.centered-content { align-items: stretch; }
.centered-content .large-logo { align-self: center; width: 92px; margin-bottom: 25px; }
.centered-content h1 { text-align: center; }
.centered-content .primary { margin-top: 22px; }
.dashboard-header {
height: 66px;
}
.account-button {
min-width: 105px;
max-width: 132px;
height: 34px;
display: flex;
align-items: center;
gap: 7px;
margin-left: auto;
overflow: hidden;
border: 1px solid rgb(255 255 255 / 45%);
padding: 0 10px;
background: transparent;
color: white;
font-size: 14px;
}
.account-button > span:last-child {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.network-dot {
width: 7px;
height: 7px;
flex: 0 0 7px;
border-radius: 50%;
background: #63d18d;
}
.assets-dashboard {
height: calc(100% - 66px);
overflow: hidden;
}
.portfolio-balance {
padding: 22px 22px 19px;
border-bottom: 1px solid rgb(255 255 255 / 24%);
background: var(--blue-deep);
}
.portfolio-balance > span {
color: var(--muted-white);
font-size: 14px;
text-transform: uppercase;
}
.portfolio-balance > strong {
display: block;
margin-top: 4px;
font-size: 31px;
line-height: 1.2;
}
.portfolio-balance > strong small {
font-size: 13px;
}
.portfolio-balance p {
max-width: 100%;
margin: 7px 0 0;
overflow: hidden;
color: rgb(255 255 255 / 82%);
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.wallet-actions {
height: 88px;
display: grid;
grid-template-columns: repeat(4, 1fr);
border-bottom: 1px solid rgb(255 255 255 / 24%);
}
.wallet-actions button {
display: grid;
place-items: center;
align-content: center;
gap: 5px;
border: 0;
border-right: 1px solid rgb(255 255 255 / 18%);
background: transparent;
color: white;
font-size: 14px;
font-weight: 700;
}
.wallet-actions button:last-child {
border-right: 0;
}
.action-icon {
width: 29px;
height: 29px;
display: grid;
place-items: center;
border: 1px solid rgb(255 255 255 / 65%);
font-size: 16px;
font-weight: 400;
}
.asset-ledger {
height: calc(100% - 209px);
background: var(--dark);
color: white;
}
.asset-filter {
height: 42px;
display: grid;
grid-template-columns: 1fr 1fr;
border-bottom: 1px solid var(--dark-line);
padding: 5px 19px;
background: #0f1a22;
}
.asset-filter button {
border: 0;
border-bottom: 2px solid transparent;
background: transparent;
color: var(--dark-muted);
font-size: 14px;
font-weight: 700;
}
.asset-filter button.active {
border-bottom-color: var(--accent);
color: white;
}
.asset-ledger-heading {
height: 45px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 19px;
border-bottom: 1px solid var(--dark-line);
}
.asset-ledger-heading h1 {
margin: 0;
font-size: 19px;
}
.asset-ledger-heading button {
width: 30px;
height: 30px;
border: 0;
background: transparent;
color: var(--accent);
font-size: 17px;
}
.asset-row {
min-height: 66px;
display: grid;
grid-template-columns: 38px minmax(0, 1fr) auto;
gap: 11px;
align-items: center;
padding: 10px 19px;
border-bottom: 1px solid var(--dark-line);
background: var(--surface);
}
.asset-symbol {
width: 36px;
height: 36px;
display: grid;
place-items: center;
background: var(--blue);
color: white;
font-size: 12px;
font-weight: 700;
}
.contractless-symbol img {
width: 25px;
filter: brightness(0) invert(1);
}
.asset-name,
.asset-value {
min-width: 0;
display: grid;
gap: 2px;
}
.asset-name strong,
.asset-value strong {
overflow: hidden;
font-size: 16px;
text-overflow: ellipsis;
white-space: nowrap;
}
.asset-name span,
.asset-value span {
color: var(--dark-muted);
font-size: 13px;
}
.asset-value {
max-width: 125px;
text-align: right;
}
.token-list {
max-height: calc(100% - 148px);
overflow-y: auto;
}
.empty-assets {
display: grid;
gap: 5px;
padding: 27px 20px;
color: var(--dark-muted);
text-align: center;
}
.empty-assets strong {
color: #dce8ee;
font-size: 16px;
}
.empty-assets span {
font-size: 14px;
}
.receive-screen {
background: var(--dark);
}
.receive-screen .wallet-header {
background: var(--blue);
}
.send-screen,
.send-review-screen,
.send-success-screen {
background: var(--dark);
color: white;
}
.send-screen .wallet-header,
.send-review-screen .wallet-header,
.send-success-screen .wallet-header {
background: var(--blue);
}
.send-content,
.send-review-content,
.send-success-content {
height: calc(100% - 72px);
padding: 22px;
overflow-y: auto;
}
.send-content {
display: grid;
align-content: start;
gap: 17px;
}
.send-content label {
color: white;
font-size: 14px;
}
.send-content input,
.send-content select {
width: 100%;
min-height: 48px;
border: 1px solid var(--dark-line);
padding: 0 13px;
background: var(--surface);
color: white;
outline: 0;
}
.send-content input:focus,
.send-content select:focus {
border-color: var(--accent);
}
.send-amount-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
}
.send-amount-row input {
border-right: 0;
}
.send-amount-row > span {
min-width: 64px;
display: grid;
place-items: center;
border: 1px solid var(--dark-line);
background: var(--surface-raised);
color: var(--accent);
font-weight: 700;
}
.field-note {
display: block;
margin-top: 7px;
color: var(--dark-muted);
font-size: 13px;
}
.send-continue {
margin-top: 5px;
}
.send-review-content {
padding: 0 22px 24px;
}
.send-review-amount {
margin: 0 -22px 20px;
padding: 24px 22px;
background: var(--blue-deep);
}
.send-review-amount > span {
color: var(--muted-white);
font-size: 13px;
text-transform: uppercase;
}
.send-review-amount strong {
display: block;
margin-top: 5px;
font-size: 29px;
}
.send-review-amount small {
color: var(--accent);
font-size: 15px;
}
.send-review-details {
margin: 0 0 18px;
}
.send-review-details > div {
padding: 12px 0;
border-bottom: 1px solid var(--dark-line);
}
.send-review-details dt {
margin-bottom: 4px;
color: var(--dark-muted);
font-size: 13px;
}
.send-review-details dd {
margin: 0;
overflow-wrap: anywhere;
color: white;
font-weight: 700;
}
.signing-notice {
margin: 18px 0;
padding-left: 12px;
border-left: 3px solid var(--accent);
color: var(--dark-muted);
}
.send-success-content {
text-align: center;
}
.send-success-content p {
color: var(--dark-muted);
}
.send-txid {
margin: 24px 0 14px;
padding: 14px;
border: 1px solid var(--dark-line);
background: var(--surface);
text-align: left;
}
.send-txid span {
display: block;
margin-bottom: 5px;
color: var(--dark-muted);
font-size: 13px;
}
.send-txid strong {
overflow-wrap: anywhere;
}
.send-success-content .secondary {
margin-bottom: 10px;
}
.receive-content {
height: calc(100% - 72px);
overflow-y: auto;
padding: 25px 24px 22px;
text-align: center;
}
.receive-label {
color: var(--accent);
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
}
.receive-content h1 {
margin-top: 8px;
}
.receive-content > p {
margin: 0 auto 20px;
color: var(--dark-muted);
font-size: 11px;
line-height: 1.45;
}
.qr-frame {
width: 238px;
height: 238px;
display: grid;
place-items: center;
margin: 0 auto 19px;
border: 1px solid #708693;
padding: 8px;
background: white;
}
.qr-frame canvas {
width: 220px;
height: 220px;
display: block;
}
.receive-address {
display: grid;
gap: 6px;
border: 1px solid var(--dark-line);
padding: 13px;
background: var(--surface);
text-align: left;
}
.receive-address span {
color: var(--dark-muted);
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
}
.receive-address strong {
overflow-wrap: anywhere;
color: #e5f0f5;
font: 12px/1.4 Consolas, monospace;
}
.receive-copy {
margin-top: 13px;
}
.nfts-screen,
.nft-detail-screen {
background: var(--dark);
color: white;
}
.nfts-screen .wallet-header,
.nft-detail-screen .wallet-header {
background: var(--blue);
}
.header-refresh {
width: 34px;
height: 34px;
display: grid;
place-items: center;
margin-left: auto;
border: 1px solid rgb(255 255 255 / 70%);
background: transparent;
color: white;
font-size: 18px;
}
.nfts-content,
.nft-detail-content {
height: calc(100% - 72px);
overflow-y: auto;
}
.nfts-summary {
min-height: 42px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 18px;
border-bottom: 1px solid var(--dark-line);
background: #0f1a22;
color: var(--dark-muted);
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
}
.nfts-summary span:first-child {
color: var(--accent);
}
.nfts-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 1px;
padding: 1px;
background: var(--dark-line);
}
.nft-card {
min-width: 0;
display: grid;
align-content: start;
border: 0;
padding: 0;
background: var(--surface);
color: white;
text-align: left;
}
.nft-card:focus-visible {
outline: 2px solid var(--accent);
outline-offset: -2px;
}
.nft-card-media {
width: 100%;
aspect-ratio: 1;
display: grid;
place-items: center;
overflow: hidden;
background: #17303e;
color: var(--accent);
font-size: 28px;
font-weight: 700;
}
.nft-card-media img {
width: 100%;
height: 100%;
display: block;
object-fit: cover;
}
.nft-card-identity {
min-height: 116px;
display: grid;
align-content: start;
gap: 3px;
padding: 11px 12px 13px;
}
.nft-card-identity > span {
color: var(--accent);
font-size: 11px;
font-weight: 700;
}
.nft-card-identity strong {
overflow: hidden;
font-size: 15px;
text-overflow: ellipsis;
white-space: nowrap;
}
.nft-card-identity small {
overflow: hidden;
color: var(--dark-muted);
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.nft-card-identity b {
margin-top: 5px;
color: white;
font-size: 12px;
}
.nft-card-identity em {
color: #e9c667;
font-size: 11px;
font-style: normal;
}
.nfts-empty {
grid-column: 1 / -1;
min-height: 300px;
display: grid;
place-content: center;
gap: 6px;
padding: 30px;
background: var(--surface);
color: var(--dark-muted);
text-align: center;
}
.nfts-empty strong {
color: white;
font-size: 17px;
}
.nfts-pagination {
min-height: 52px;
display: grid;
grid-template-columns: 42px 1fr 42px;
align-items: center;
gap: 10px;
padding: 7px 14px;
border-top: 1px solid var(--dark-line);
background: #0f1a22;
text-align: center;
}
.nfts-pagination[hidden] {
display: none;
}
.nfts-pagination button {
width: 38px;
height: 38px;
border: 1px solid var(--dark-line);
background: var(--surface);
color: var(--accent);
font-size: 17px;
}
.nfts-pagination button:disabled {
color: #61727c;
}
.nfts-pagination span {
color: var(--dark-muted);
font-size: 13px;
}
.nft-detail-media {
width: 100%;
aspect-ratio: 16 / 11;
display: grid;
place-items: center;
overflow: hidden;
border-bottom: 1px solid var(--dark-line);
background: #142934;
}
.nft-detail-media img {
width: 100%;
height: 100%;
display: block;
object-fit: contain;
}
.nft-detail-heading {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 15px;
align-items: end;
padding: 18px 20px 14px;
}
.nft-detail-heading > div {
min-width: 0;
}
.nft-detail-heading span {
color: var(--accent);
font-size: 11px;
font-weight: 700;
}
.nft-detail-heading h1 {
overflow-wrap: anywhere;
margin: 4px 0 0;
font-size: 23px;
}
.nft-detail-heading > strong {
color: #63d18d;
font-size: 13px;
text-align: right;
}
.nft-detail-description {
margin: 0;
padding: 0 20px 17px;
color: var(--dark-muted);
font-size: 14px;
line-height: 1.5;
}
.nft-detail-attributes {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 7px;
padding: 0 20px 18px;
}
.nft-detail-attributes[hidden] {
display: none;
}
.nft-detail-attributes > div {
min-width: 0;
display: grid;
gap: 2px;
border: 1px solid var(--dark-line);
padding: 9px;
background: var(--surface-raised);
}
.nft-detail-attributes span {
overflow: hidden;
color: var(--dark-muted);
font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
.nft-detail-attributes strong {
overflow-wrap: anywhere;
font-size: 13px;
}
.nft-detail-fields {
margin: 0;
border-top: 1px solid var(--dark-line);
}
.nft-detail-fields > div {
display: grid;
gap: 4px;
padding: 12px 20px;
border-bottom: 1px solid var(--dark-line);
}
.nft-detail-fields dt {
color: var(--dark-muted);
font-size: 12px;
}
.nft-detail-fields dd {
margin: 0;
overflow-wrap: anywhere;
color: white;
font: 12px/1.45 Consolas, monospace;
}
.nft-detail-actions {
padding: 18px 20px 0;
}
.nft-provenance {
padding: 18px 20px 25px;
}
.nft-provenance h2 {
margin: 0 0 11px;
font-size: 16px;
}
.nft-provenance p {
color: var(--dark-muted);
}
.nft-history-row {
width: 100%;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 3px 12px;
border: 0;
padding: 10px 0;
border-bottom: 1px solid var(--dark-line);
background: transparent;
color: white;
text-align: left;
}
.nft-history-row:hover,
.nft-history-row:focus-visible {
background: var(--surface-raised);
}
.nft-history-row:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.nft-history-row strong {
font-size: 13px;
}
.nft-history-row span {
color: var(--dark-muted);
font-size: 12px;
text-align: right;
}
.nft-history-row small {
grid-column: 1 / -1;
color: var(--accent);
font: 11px Consolas, monospace;
}
.activity-screen {
background: var(--dark);
color: white;
}
.activity-screen .wallet-header {
background: var(--blue);
}
.activity-content {
height: calc(100% - 72px);
overflow-y: auto;
}
.activity-summary {
min-height: 42px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 18px;
border-bottom: 1px solid var(--dark-line);
background: #0f1a22;
color: var(--dark-muted);
font-size: 13px;
text-transform: uppercase;
}
.activity-summary strong {
color: var(--accent);
font-size: 13px;
}
.activity-summary > div {
display: flex;
align-items: center;
gap: 8px;
}
.activity-summary button {
width: 30px;
height: 30px;
border: 1px solid var(--dark-line);
background: transparent;
color: var(--accent);
font-size: 17px;
}
.activity-list {
background: var(--surface);
}
.activity-row {
width: 100%;
min-height: 98px;
display: grid;
grid-template-columns: 31px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
padding: 11px 17px;
border-bottom: 1px solid var(--dark-line);
border-top: 0;
border-right: 0;
border-left: 0;
background: transparent;
color: white;
text-align: left;
}
.activity-row:focus-visible {
outline: 2px solid var(--accent);
outline-offset: -2px;
}
.activity-marker {
width: 29px;
height: 29px;
display: grid;
place-items: center;
border: 1px solid #607987;
color: var(--accent);
font-size: 13px;
font-weight: 700;
}
.activity-marker.incoming,
.activity-status .incoming {
color: #63d18d;
}
.activity-marker.outgoing,
.activity-status .outgoing {
color: white;
}
.activity-details,
.activity-status {
min-width: 0;
display: grid;
gap: 2px;
}
.activity-details strong {
overflow: hidden;
font-size: 16px;
text-overflow: ellipsis;
white-space: nowrap;
}
.activity-details span {
color: #c1d0d8;
font: 13px Consolas, monospace;
}
.activity-details small,
.activity-status span {
color: var(--dark-muted);
font-size: 13px;
}
.activity-status {
max-width: 132px;
text-align: right;
}
.activity-status strong {
font-size: 14px;
white-space: nowrap;
}
.activity-status .confirmed {
color: #63d18d;
}
.activity-status .pending {
color: #e9c667;
}
.activity-empty {
display: grid;
gap: 6px;
padding: 42px 24px;
color: var(--dark-muted);
font-size: 14px;
text-align: center;
}
.activity-empty strong {
color: #dce8ee;
font-size: 16px;
}
.activity-error {
color: #ffaaa4;
}
.transaction-screen {
background: var(--dark);
color: white;
}
.transaction-screen .wallet-header {
background: var(--blue);
}
.transaction-confirmed {
color: #84e7aa;
}
.transaction-pending {
color: #f1d27b;
}
.transaction-content {
height: calc(100% - 72px);
overflow-y: auto;
padding-bottom: 24px;
}
.transaction-identity {
display: grid;
gap: 13px;
padding: 18px;
border-bottom: 1px solid var(--dark-line);
background: var(--surface-raised);
}
.transaction-identity > div {
display: grid;
gap: 7px;
}
.transaction-identity span,
.transaction-field span {
color: var(--dark-muted);
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
}
.transaction-identity strong {
overflow-wrap: anywhere;
color: white;
font: 13px/1.55 Consolas, monospace;
}
.transaction-identity button {
min-height: 40px;
border: 1px solid var(--accent);
background: transparent;
color: var(--accent);
font-size: 14px;
font-weight: 700;
}
.transaction-section {
border-top: 1px solid var(--dark-line);
}
.transaction-section h2 {
margin: 0;
padding: 16px 18px 10px;
font-size: 16px;
}
.transaction-fields {
display: grid;
}
.transaction-field {
display: grid;
gap: 6px;
padding: 13px 18px;
border-bottom: 1px solid var(--dark-line);
background: var(--surface);
}
.transaction-field strong {
overflow-wrap: anywhere;
color: white;
font-size: 15px;
font-weight: 600;
line-height: 1.45;
}
.transaction-technical {
border-top: 1px solid var(--dark-line);
}
.transaction-technical summary {
padding: 17px 18px;
color: var(--accent);
font-size: 15px;
font-weight: 700;
cursor: pointer;
}
.technical-field strong {
font: 12px/1.55 Consolas, monospace;
word-break: break-all;
}
.drawer-backdrop {
position: absolute;
inset: 0;
z-index: 10;
background: rgb(9 26 39 / 54%);
}
.account-drawer {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: 11;
width: 338px;
display: flex;
flex-direction: column;
border-left: 1px solid var(--dark-line);
background: var(--dark);
color: white;
transform: translateX(100%);
transition: transform 180ms ease-out;
}
.account-drawer.open {
transform: translateX(0);
}
.drawer-header {
height: 72px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 18px;
border-bottom: 1px solid var(--dark-line);
background: var(--blue);
color: white;
}
.drawer-header > div {
display: grid;
gap: 2px;
}
.drawer-header strong {
font-size: 19px;
}
.drawer-header span {
color: var(--muted-white);
font-size: 14px;
}
.drawer-header button {
width: 34px;
height: 34px;
border: 1px solid rgb(255 255 255 / 45%);
background: transparent;
color: white;
font-size: 23px;
line-height: 1;
}
.drawer-section {
max-height: 244px;
overflow-y: auto;
padding: 17px 15px 14px;
border-bottom: 1px solid var(--dark-line);
}
.drawer-label {
display: block;
margin: 0 3px 8px;
color: var(--dark-muted);
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
}
.known-address {
width: 100%;
min-height: 58px;
display: grid;
grid-template-columns: minmax(0, 1fr) 30px;
gap: 4px;
align-items: center;
border: 1px solid var(--dark-line);
padding: 4px;
background: var(--surface);
color: white;
}
.known-address + .known-address {
margin-top: 7px;
}
.known-address.active-address {
border-color: var(--accent);
background: var(--surface-active);
}
.address-select {
min-width: 0;
min-height: 48px;
display: grid;
grid-template-columns: 36px minmax(0, 1fr) 20px;
gap: 10px;
align-items: center;
border: 0;
padding: 5px 6px;
background: transparent;
color: white;
text-align: left;
}
.rename-address {
width: 28px;
height: 34px;
border: 0;
background: transparent;
color: var(--accent);
font-size: 16px;
}
.address-avatar {
width: 34px;
height: 34px;
display: grid;
place-items: center;
background: #204f70;
}
.address-avatar img {
width: 24px;
filter: brightness(0) invert(1);
}
.address-details {
min-width: 0;
display: grid;
gap: 2px;
}
.address-details strong {
font-size: 15px;
}
.address-details small {
overflow: hidden;
color: var(--dark-muted);
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.selected-mark {
color: var(--success);
font-size: 14px;
font-weight: 700;
}
.drawer-navigation {
display: grid;
padding: 8px 0;
}
.drawer-navigation button {
min-height: 72px;
display: grid;
grid-template-columns: 34px minmax(0, 1fr) 16px;
gap: 10px;
align-items: center;
border: 0;
border-bottom: 1px solid var(--dark-line);
padding: 9px 18px;
background: transparent;
color: white;
text-align: left;
}
.drawer-navigation button > span:nth-child(2) {
display: grid;
gap: 2px;
}
.drawer-navigation strong {
font-size: 16px;
}
.drawer-navigation small {
color: var(--dark-muted);
font-size: 13px;
}
.menu-icon {
width: 32px;
height: 32px;
display: grid;
place-items: center;
border: 1px solid #607987;
color: var(--accent);
font-size: 15px;
font-weight: 700;
}
.menu-arrow {
color: var(--dark-muted);
font-size: 20px;
text-align: right;
}
.drawer-lock {
min-height: 46px;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin: auto 15px 15px;
border: 1px solid var(--dark-line);
background: var(--surface-raised);
color: #dce8ee;
font-size: 14px;
font-weight: 700;
}
.header-back {
width: 34px;
height: 34px;
border: 1px solid rgb(255 255 255 / 45%);
background: transparent;
color: white;
font-size: 18px;
}
.settings-screen {
background: var(--dark);
color: white;
}
.settings-screen .wallet-header {
background: var(--blue);
color: white;
}
.settings-content {
height: calc(100% - 72px);
overflow-y: auto;
padding-bottom: 20px;
}
.settings-group {
padding: 18px 20px;
border-bottom: 1px solid var(--dark-line);
background: var(--surface);
}
.settings-heading {
display: grid;
gap: 3px;
margin-bottom: 15px;
}
.settings-heading strong {
font-size: 13px;
}
.settings-heading span {
color: var(--dark-muted);
font-size: 12px;
line-height: 1.4;
}
.settings-group label {
color: #b7c6ce;
font-size: 12px;
text-transform: uppercase;
}
.settings-group input,
.settings-group select {
width: 100%;
height: 44px;
border: 1px solid #8699a5;
padding: 0 11px;
background: white;
color: var(--ink);
outline: 0;
}
.settings-group input:focus,
.settings-group select:focus {
border-color: var(--blue);
outline: 2px solid rgb(33 103 165 / 14%);
}
.settings-save {
width: calc(100% - 40px);
margin: 16px 20px;
border-color: var(--accent);
background: var(--accent);
color: #08202b;
}
.backup-settings {
padding-right: 0;
padding-left: 0;
}
.backup-settings .settings-heading {
padding: 0 20px;
}
.settings-action {
width: 100%;
min-height: 61px;
display: grid;
grid-template-columns: 34px minmax(0, 1fr) 16px;
gap: 10px;
align-items: center;
border: 0;
border-top: 1px solid var(--dark-line);
padding: 9px 20px;
background: transparent;
color: white;
text-align: left;
}
.settings-action:last-child {
border-bottom: 1px solid var(--dark-line);
}
.settings-action > span:nth-child(2) {
display: grid;
gap: 2px;
}
.settings-action strong {
font-size: 14px;
}
.settings-action small {
color: var(--dark-muted);
font-size: 11px;
}
.settings-action > span:last-child {
color: var(--dark-muted);
font-size: 20px;
}
.settings-action-icon {
width: 32px;
height: 32px;
display: grid;
place-items: center;
border: 1px solid #607987;
color: var(--accent);
font-size: 15px;
font-weight: 700;
}
.private-key-result {
margin: 16px 20px 0;
border: 1px solid var(--dark-line);
padding: 13px;
background: var(--surface-raised);
}
.private-key-result > div {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 9px;
}
.private-key-result > div > strong {
font-size: 11px;
text-transform: uppercase;
}
.private-key-result > div > button {
width: 28px;
height: 28px;
border: 0;
background: transparent;
color: var(--dark-muted);
font-size: 19px;
}
.private-key-result textarea {
height: 95px;
min-height: 95px;
margin: 0 0 10px;
border: 1px solid #8699a5;
padding: 9px;
background: white;
color: var(--ink);
font-size: 11px;
}
.private-key-result .secondary {
border-color: var(--accent);
color: var(--accent);
}
.modal-backdrop {
position: absolute;
inset: 0;
z-index: 30;
background: rgb(9 26 39 / 68%);
}
.backup-key-modal {
position: absolute;
top: 50%;
right: 20px;
left: 20px;
z-index: 31;
border: 1px solid white;
background: var(--blue);
color: white;
transform: translateY(-50%);
}
.backup-key-modal > header {
min-height: 65px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 15px;
border-bottom: 1px solid rgb(255 255 255 / 40%);
}
.backup-key-modal > header > div {
display: grid;
gap: 2px;
}
.backup-key-modal > header strong {
font-size: 13px;
}
.backup-key-modal > header span {
color: var(--muted-white);
font-size: 11px;
}
.backup-key-modal > header button {
width: 30px;
height: 30px;
border: 1px solid rgb(255 255 255 / 45%);
background: transparent;
color: white;
font-size: 20px;
}
.backup-key-modal > div {
padding: 17px 15px;
}
.backup-key-modal .primary {
margin-top: 16px;
}
#notice {
position: absolute;
right: 18px;
bottom: 14px;
left: 18px;
z-index: 40;
margin: 0;
padding: 10px 12px;
border: 1px solid #8d4448;
border-left: 3px solid #ff7168;
background: #321c20;
color: #ffc0bb;
font-size: 11px;
}
#notice:empty { display: none; }
.provider-approval-screen {
display: flex;
flex-direction: column;
}
.provider-approval-screen .screen-content {
min-height: 0;
flex: 1;
overflow-y: auto;
padding-bottom: 18px;
}
.approval-context {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.approval-context .eyebrow {
min-width: 0;
overflow-wrap: anywhere;
}
.risk-label {
flex: 0 0 auto;
padding: 5px 8px;
border: 1px solid currentColor;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
}
.risk-safe {
background: #123b2d;
color: #63e5a9;
}
.risk-low {
background: #403612;
color: #ffe16c;
}
.risk-high {
background: #481f24;
color: #ff8b8b;
}
.approval-details {
display: grid;
grid-template-columns: minmax(100px, 0.8fr) minmax(0, 1.4fr);
margin: 20px 0;
border: 1px solid #315466;
background: #091923;
}
.approval-details dt,
.approval-details dd {
min-width: 0;
margin: 0;
padding: 11px 12px;
border-bottom: 1px solid #203d4c;
overflow-wrap: anywhere;
}
.approval-details dt {
color: #85dce8;
font-size: 12px;
font-weight: 700;
text-transform: capitalize;
}
.approval-details dd {
color: #f5f9fb;
font: 13px/1.45 Arial, Helvetica, sans-serif;
white-space: pre-wrap;
}
.approval-details dt:last-of-type,
.approval-details dd:last-of-type {
border-bottom: 0;
}
.approval-actions {
display: grid;
flex: 0 0 auto;
grid-template-columns: 1fr 1fr;
gap: 10px;
padding: 14px 24px 18px;
border-top: 1px solid rgb(255 255 255 / 35%);
background: var(--blue-deep);
}
.approval-actions button {
min-height: 48px;
margin: 0;
}
.approval-actions button.is-processing::before {
width: 15px;
height: 15px;
content: "";
border: 2px solid currentcolor;
border-right-color: transparent;
border-radius: 50%;
animation: approval-spin 700ms linear infinite;
}
.approval-actions button:disabled {
opacity: 0.72;
}
@keyframes approval-spin {
to { transform: rotate(360deg); }
}
.network-choice {
display: grid;
grid-template-columns: 1fr 1fr;
width: 100%;
margin: 0 0 18px;
border: 1px solid #5b8caf;
background: #0a1b27;
}
.network-choice button {
min-height: 42px;
border: 0;
border-right: 1px solid #315466;
background: transparent;
color: #b9cfdb;
font: 700 13px/1 Arial, Helvetica, sans-serif;
}
.network-choice button:last-child { border-right: 0; }
.network-choice button.active {
background: #43d6e8;
color: #06151e;
}
.drawer-network { margin: 8px 0 0; }
.settings-help {
display: block;
margin-top: 8px;
color: #a9c2cf;
font-size: 12px;
line-height: 1.45;
}