Files
ccn/Services/Website/Resources/Static/css/trade.css
T

1145 lines
18 KiB
CSS

/* CCN — the path to a sale: offer sheet, messages, sale record, seller dashboard. */
/* Small covers */
.cover--thumb {
flex-shrink: 0;
width: 46px;
}
/* Too small for its imprint and number. */
.cover--thumb .cover__foot {
display: none;
}
.cover--agreed {
flex-shrink: 0;
width: 96px;
}
/* ==========================================================================
Offer sheet
========================================================================== */
.sheet {
max-width: calc(520px + 2 * var(--gutter));
}
.sheet__card,
.sheet__form {
display: flex;
flex-direction: column;
gap: 18px;
}
.sheet__head {
display: flex;
align-items: center;
gap: var(--space-3);
}
.sheet__title {
font-size: 15px;
font-weight: 600;
}
.field__optional {
color: var(--muted);
font-weight: 400;
}
.amount {
display: flex;
align-items: center;
height: 64px;
padding: 0 var(--space-4);
border: 1.5px solid var(--ink);
border-radius: var(--radius-sm);
background: var(--card);
}
.amount:focus-within {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.amount__sign {
color: var(--muted);
font-size: 32px;
font-weight: 600;
}
.amount__input {
flex: 1 1 auto;
min-width: 0;
height: 60px;
padding: 0 var(--space-2);
border: 0;
outline: 0;
background: transparent;
font-size: 32px;
font-weight: 600;
}
.amount__picks {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.amount__picks li {
flex: 1 1 auto;
}
.amount__picks .pill {
justify-content: center;
width: 100%;
height: 40px;
font-size: 12px;
font-weight: 600;
}
.sheet__terms {
display: flex;
flex-direction: column;
gap: var(--space-2);
padding: var(--space-3) 14px;
border-radius: var(--radius-sm);
background: var(--tint);
color: var(--ink-soft);
font-size: 13px;
line-height: 1.45;
}
.sheet__terms strong {
color: var(--ink);
font-weight: 600;
}
.sheet__sum {
display: grid;
grid-template-columns: 1fr auto;
gap: var(--space-2) var(--space-4);
font-size: 14px;
}
.sheet__sum dd {
text-align: right;
}
.sheet__total {
padding-top: var(--space-2);
border-top: 1px solid var(--line);
font-size: 18px;
font-weight: 600;
}
.sheet__cancel {
color: var(--muted);
font-size: 13px;
text-align: center;
}
/* ==========================================================================
Sale record
========================================================================== */
.sale,
.sale__column,
.sale__card {
display: flex;
flex-direction: column;
}
.sale {
gap: var(--space-6);
}
.sale__head {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
gap: var(--space-3);
}
.sale__head .chip {
padding: var(--space-1) var(--space-2);
font-size: 12px;
}
.sale__heading {
display: flex;
flex-direction: column;
gap: 6px;
}
.sale__summary {
color: var(--muted);
}
.sale__handshake {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.stepper {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: var(--space-2);
padding: var(--space-2) 0;
}
.stepper__step {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-2);
text-align: center;
}
.stepper__dot {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: 50%;
background: var(--line);
color: var(--muted);
font-size: 13px;
font-weight: 700;
}
.stepper__step--done .stepper__dot {
background: var(--good);
color: var(--card);
}
.stepper__step--current .stepper__dot {
background: var(--accent);
color: #ffffff;
}
.stepper__name {
font-size: 13px;
font-weight: 600;
}
.sale__next {
display: flex;
flex-direction: column;
gap: var(--space-4);
padding-top: var(--space-4);
border-top: 1px solid var(--line);
}
.sale__rule,
.sale__waiting {
color: var(--ink-soft);
font-size: 13px;
line-height: 1.45;
}
.sale__waiting {
align-self: center;
font-weight: 600;
}
.sale__actions,
.sale__step {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-2);
}
.sale__note {
flex: 1 1 200px;
}
.rating {
display: flex;
flex-direction: row-reverse;
gap: var(--space-1);
}
.rating__option {
position: relative;
cursor: pointer;
}
.rating__option input {
position: absolute;
opacity: 0;
}
.rating__option span {
display: flex;
align-items: center;
height: var(--control-md);
padding: 0 var(--space-3);
border: 1px solid var(--rule);
border-radius: var(--radius-sm);
background: var(--card);
font-size: 13px;
font-weight: 600;
}
.rating__option input:checked + span {
border-color: var(--header);
background: var(--header);
color: var(--on-dark);
}
.rating__option input:focus-visible + span {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.sale__body {
display: grid;
gap: var(--space-6);
align-items: start;
}
.sale__column {
gap: var(--space-6);
}
.sale__card {
gap: var(--space-4);
}
.sale__title {
color: var(--ink);
font-size: 13px;
}
.sale__agreed {
display: flex;
align-items: flex-start;
gap: var(--space-5);
}
.sale__agreed .details,
.sale__card > .details {
flex: 1 1 auto;
font-size: 13px;
}
.sale__text {
color: var(--ink-soft);
}
.sale__party {
display: flex;
align-items: center;
gap: var(--space-3);
}
.sale__party-name {
font-size: 14px;
font-weight: 600;
}
@media (min-width: 1024px) {
.sale__next {
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.sale__rule {
max-width: 520px;
}
.sale__actions,
.sale__step {
flex-wrap: nowrap;
}
.sale__note {
flex-basis: 260px;
}
.sale__body {
grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
}
.cover--agreed {
width: 140px;
}
}
/* ==========================================================================
Messages
========================================================================== */
.messages {
display: grid;
gap: var(--space-6);
align-items: start;
}
/* Below desktop, the rail and the conversation take turns. */
.messages--open .messages__rail,
.messages:not(.messages--open) .messages__thread {
display: none;
}
.messages__rail,
.messages__thread {
display: flex;
flex-direction: column;
gap: var(--space-4);
min-width: 0;
}
.messages__rail-head {
display: flex;
align-items: baseline;
justify-content: space-between;
}
.messages__boxes {
display: flex;
gap: var(--space-2);
}
.messages__list {
display: flex;
flex-direction: column;
border-top: 1px solid var(--line);
}
.messages__item {
display: flex;
align-items: flex-start;
gap: var(--space-3);
padding: var(--space-3);
border-bottom: 1px solid var(--line);
color: var(--ink);
text-decoration: none;
}
.messages__item:hover,
.messages__item[aria-current] {
background: var(--tint);
color: var(--ink);
}
.messages__item-text {
display: flex;
flex: 1 1 auto;
flex-direction: column;
gap: 2px;
min-width: 0;
font-size: 13px;
}
.messages__item-top {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--space-2);
font-size: 14px;
}
.messages__item-about {
color: var(--muted);
font-size: 12px;
}
.messages__item-preview {
overflow: hidden;
color: var(--ink-soft);
text-overflow: ellipsis;
white-space: nowrap;
}
.messages__unread {
display: flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 9px;
background: var(--accent);
color: #ffffff;
font-size: 10px;
font-weight: 700;
}
.messages__back {
color: var(--muted);
font-size: 13px;
}
.messages__pinned {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-3);
padding-bottom: var(--space-4);
border-bottom: 1px solid var(--line);
}
.messages__pinned-text {
display: flex;
flex: 1 1 200px;
flex-direction: column;
gap: var(--space-1);
min-width: 0;
}
.messages__pinned-top {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-2);
}
.messages__pinned-title {
color: var(--ink);
font-size: 15px;
font-weight: 600;
text-decoration: none;
}
.messages__pinned-top a.chip {
text-decoration: none;
}
.messages__entries {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.entry {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: var(--space-1);
max-width: 520px;
}
.entry--own {
align-items: flex-end;
align-self: flex-end;
}
.entry__bubble {
padding: var(--space-3) 14px;
border: 1px solid var(--line);
border-radius: var(--radius-sm);
background: var(--card);
font-size: 14px;
line-height: 1.5;
overflow-wrap: anywhere;
white-space: pre-line;
}
.entry--own .entry__bubble {
border-color: var(--header);
background: var(--header);
color: var(--on-dark);
}
.entry--event {
align-items: center;
align-self: center;
max-width: 100%;
}
.entry__event {
color: var(--muted);
font-size: 12px;
text-align: center;
}
.entry__sale {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: var(--space-2);
max-width: 520px;
}
.offer-card {
display: flex;
flex-direction: column;
gap: var(--space-2);
width: min(420px, 100%);
padding: var(--space-4);
}
.offer-card__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-2);
}
.offer-card__note {
color: var(--ink-soft);
font-size: 14px;
line-height: 1.5;
}
.answer {
display: flex;
gap: var(--space-2);
}
.messages__replies {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
.composer {
display: flex;
align-items: flex-end;
gap: var(--space-2);
}
.composer__input {
flex: 1 1 auto;
min-height: 64px;
}
.messages__safety {
text-wrap: pretty;
}
@media (min-width: 1024px) {
.messages {
grid-template-columns: 380px minmax(0, 1fr);
gap: var(--space-10);
padding-top: var(--space-8);
}
.messages--open .messages__rail,
.messages:not(.messages--open) .messages__thread {
display: flex;
}
.messages__thread--none {
align-items: center;
justify-content: center;
min-height: 240px;
color: var(--muted);
}
}
/* ==========================================================================
Seller dashboard
========================================================================== */
.sell {
display: flex;
flex-direction: column;
gap: var(--space-6);
}
.sell__head {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
gap: var(--space-4);
}
.sell__heading {
display: flex;
flex-direction: column;
gap: 6px;
}
.sell__summary,
.sell__none {
color: var(--muted);
}
.sell__none {
font-size: 14px;
}
.tiles {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--space-3);
}
.tiles__tile {
display: flex;
flex-direction: column;
gap: var(--space-1);
padding: var(--space-4);
}
.sell__panel {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.rows {
display: flex;
flex-direction: column;
}
.rows__row {
display: grid;
gap: var(--space-2) var(--space-4);
align-items: center;
padding: var(--space-3) 0;
border-top: 1px solid var(--line);
color: var(--ink);
font-size: 14px;
text-decoration: none;
}
a.rows__row:hover {
background: var(--paper);
color: var(--ink);
}
.rows__title {
color: var(--ink);
font-weight: 600;
text-decoration: none;
}
.rows__title:hover {
text-decoration: underline;
text-underline-offset: 3px;
}
.handshake {
display: flex;
flex-wrap: wrap;
gap: var(--space-3);
color: var(--muted);
font-size: 11px;
}
.handshake__step {
display: flex;
align-items: center;
gap: var(--space-1);
}
.handshake__step::before {
content: "";
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--line);
}
.handshake__step--done {
color: var(--ink);
}
.handshake__step--done::before {
background: var(--good);
}
@media (min-width: 600px) {
.tiles {
grid-template-columns: repeat(5, minmax(0, 1fr));
}
.rows__row--listing {
grid-template-columns: minmax(0, 2fr) 90px 140px;
}
}
@media (min-width: 1024px) {
.sell {
gap: var(--space-7);
padding-top: var(--space-8);
}
.tiles {
gap: var(--space-5);
}
.tiles__tile {
padding: var(--space-5);
}
.rows__row--offer {
grid-template-columns: minmax(0, 2fr) 90px 90px 110px minmax(0, 1.2fr) auto;
}
.rows__row--sale {
grid-template-columns: 100px minmax(0, 2fr) 70px minmax(0, 1fr) 340px 130px;
}
}
/* ==========================================================================
New listing
========================================================================== */
.listing-form,
.listing-form__form,
.listing-form__section,
.listing-form__scope {
display: flex;
flex-direction: column;
}
.listing-form {
gap: var(--space-6);
max-width: calc(880px + 2 * var(--gutter));
}
.listing-form__head {
display: flex;
flex-direction: column;
gap: 6px;
}
.listing-form__form {
gap: var(--space-5);
}
.listing-form__section {
gap: var(--space-5);
}
.listing-form__scope {
gap: var(--space-4);
}
.listing-form__grid {
display: grid;
gap: var(--space-4);
align-items: start;
}
.listing-form__modes {
display: grid;
gap: var(--space-3);
}
.listing-form__mode {
display: flex;
align-items: flex-start;
gap: var(--space-3);
padding: var(--space-4);
border: 1px solid var(--rule);
border-radius: var(--radius-sm);
cursor: pointer;
}
.listing-form__mode:has(input:checked) {
border-color: var(--ink);
background: var(--tint);
}
.listing-form__mode span {
display: flex;
flex-direction: column;
gap: var(--space-1);
font-size: 14px;
}
.listing-form__checks {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 10px var(--space-4);
}
.listing-form__files {
padding: var(--space-4);
border: 1px dashed var(--rule);
border-radius: var(--radius-sm);
background: var(--paper);
font-size: 13px;
}
.listing-form__submit {
display: flex;
justify-content: flex-end;
gap: var(--space-3);
}
.sell__actions {
display: flex;
flex-wrap: wrap;
gap: var(--space-2);
}
@media (min-width: 600px) {
.listing-form__grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.listing-form__modes {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.field--wide {
grid-column: span 2;
}
}
@media (min-width: 1024px) {
.listing-form {
padding-top: var(--space-8);
}
}
/* ==========================================================================
Want list
========================================================================== */
.wants {
display: flex;
flex-direction: column;
gap: var(--space-4);
max-width: calc(720px + 2 * var(--gutter));
}
.wants__form {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.wants__list {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.wants__want {
display: flex;
flex-direction: column;
gap: var(--space-2);
padding: 14px;
}
.wants__top,
.wants__actions {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.wants__title {
color: var(--ink);
font-size: 15px;
font-weight: 600;
text-decoration: none;
}
.wants__title:hover {
text-decoration: underline;
text-underline-offset: 3px;
}
.wants__new {
padding: 3px 7px;
border-radius: var(--radius-pill);
background: var(--accent);
color: #ffffff;
font-size: 11px;
font-weight: 700;
white-space: nowrap;
}
.wants__match {
color: var(--ink);
font-size: 13px;
font-weight: 600;
}
.wants__add {
display: flex;
align-items: center;
justify-content: center;
height: 50px;
border: 1.5px dashed var(--ink);
border-radius: var(--radius-sm);
color: var(--ink);
font-size: 14px;
font-weight: 600;
text-decoration: none;
}
.wants__add:hover {
background: var(--card);
color: var(--ink);
}
.wants__note {
text-align: center;
}
/* ==========================================================================
Account
========================================================================== */
.account {
display: grid;
gap: var(--space-6);
align-items: start;
}
.account__rail,
.account__main,
.account__section,
.account__nav {
display: flex;
flex-direction: column;
}
.account__rail {
gap: var(--space-2);
}
.account__nav {
padding-top: var(--space-2);
}
.account__nav a {
padding: 10px 0;
border-top: 1px solid var(--line);
color: var(--ink);
font-size: 14px;
text-decoration: none;
}
.account__nav a:hover {
text-decoration: underline;
text-underline-offset: 3px;
}
.account__main {
gap: var(--space-5);
}
.account__section {
gap: var(--space-4);
}
.account__form {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
gap: var(--space-3);
}
.account__form .field {
flex: 1 1 260px;
}
.account__form .button {
margin-top: 23px;
}
.account__text {
color: var(--ink-soft);
}
.rows__row--passkey {
grid-template-columns: auto minmax(0, 1fr) auto;
}
@media (min-width: 1024px) {
.wants {
padding-top: var(--space-8);
}
.account {
grid-template-columns: 240px minmax(0, 1fr);
gap: var(--space-10);
padding-top: var(--space-8);
}
}
/* ==========================================================================
Collection and events
========================================================================== */
.tiles--three {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.collection__series,
.events__event {
display: flex;
gap: var(--space-3);
padding: var(--space-3);
color: var(--ink);
text-decoration: none;
}
.collection__series:hover,
.events__event:hover {
border-color: var(--ink);
color: var(--ink);
}
.collection__text {
display: flex;
flex: 1 1 auto;
flex-direction: column;
gap: 6px;
min-width: 0;
}
.collection__top {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--space-2);
font-size: 15px;
}
.collection__complete {
color: var(--good);
font-size: 12px;
font-weight: 600;
}
.events__intro {
display: flex;
flex-direction: column;
gap: var(--space-3);
}
.events__event {
flex-direction: column;
gap: var(--space-2);
padding: 14px;
}
.events__name {
display: flex;
flex-direction: column;
gap: 2px;
font-size: 15px;
}
.events__chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.listing__sold {
display: flex;
flex-direction: column;
gap: var(--space-3);
}