Files
fizzy/app/assets/stylesheets/cards.css
T
Jason Zimdars 28a569c49b Tickets
2025-03-17 21:24:08 -05:00

318 lines
5.2 KiB
CSS

.cards {
--column-gap: 2cqi;
--row-gap: 2cqi;
font-size: 0.9cqi;
display: grid;
background-color: var(--color-container);
grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(100%/2 - var(--column-gap) * 2)), 1fr));
justify-items: center;
margin-block: 0;
padding: 3cqi;
view-transition-name: cards-container;
> * {
flex-shrink: 1;
}
.card {
max-inline-size: 50cqi;
}
@media (min-width: 70ch) {
grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(100%/3 - var(--column-gap) * 2)), 1fr));
font-size: 0.7cqi;
.card {
max-inline-size: 33cqi;
}
}
}
.card {
--block-space: 1em;
--column-gap: 0.5em;
--inline-space: 0.5em;
--row-gap: 0.5em;
aspect-ratio: 15/7;
background-color: color-mix(in srgb, var(--bubble-color) 4%, var(--color-bg));
color: color-mix(in srgb, var(--bubble-color) 40%, var(--color-ink));
font-size: 1em;
max-inline-size: 100ch;
z-index: 1;
.card__container & {
inline-size: 60cqi;
@media (max-width: 70ch) {
inline-size: 100dvw;
}
}
}
.card__actions {
position: absolute;
inset: 1.4em auto auto -4em;
z-index: 1;
}
.card__actions--right {
inset: 1.4em -3.5em auto auto;
}
.card__actions-container {
background-color: var(--color-bg);
margin-block: -1em 1em;
padding: 1em 2em;
position: relative;
z-index: 0;
.btn {
--btn-background: var(--bubble-color);
--btn-color: var(--color-ink-reversed);
}
.btn--plain {
--btn-color: var(--bubble-color);
text-decoration: underline;
}
.bubble__pop-message {
color: var(--bubble-color);
}
}
.card__actions-wrapper {
font-size: 1.33cqi;
}
.cards .card__assignees:not(:has(.avatar)) {
.txt-uppercase {
display: none;
}
}
.card__background {
inset: 0;
position: absolute;
z-index: -1;
img {
block-size: 100%;
inline-size: 100%;
object-fit: cover;
object-position: center;
opacity: 0.2;
transition: opacity 0.2s ease-in-out;
}
@media (hover: hover) {
.card:hover & {
img {
opacity: 1;
}
}
}
}
.card__body {
padding-inline: 1em;
}
.card__body-header {
flex: 2 1 75%;
padding-block: 1em;
}
.card__bucket {
background-color: var(--bubble-color);
font-weight: 800;
letter-spacing: 0.5ch;
padding: 0.5em 1em;
}
.card__container {
background-color: var(--color-container);
display: inline-block;
font-size: 1.33cqi;
padding: 2cqi 3cqi 3cqi;
}
.card__container--pointing {
--arrow-size: 20em;
--aspect-ratio: 7;
position: relative;
margin-block-end: calc(var(--arrow-size) / var(--aspect-ratio));
&::after {
aspect-ratio: var(--aspect-ratio);
background: var(--color-container);
clip-path: polygon(50% 100%, 100% 0, 0 0);
inline-size: var(--arrow-size);
content: "";
display: block;
inset-block-start: 99%;
inset-inline-start: 50%;
position: absolute;
transform: translateX(-50%);
}
}
.card__delete-btn {
.cards & {
display: none;
}
}
.card__footer {
margin-block-end: 1em;
padding-inline-end: 1em;
}
.card__header {
padding-inline-end: 0.7em;
}
.card__hide-on-index {
.cards & {
display: none;
}
}
.card__link {
--hover-size: 0;
content: "";
inset: 0;
position: absolute;
z-index: -1;
.cards & {
z-index: 1;
}
}
.card__meta {
--border-color: var(--bubble-color);
--row-gap: 0.25em;
font-size: 0.9em;
margin-inline-start: 1em;
strong {
font-size: 1.1em;
font-weight: 900;
}
.separator {
height: calc(2lh + 2ex);
}
}
.card__people {
margin-inline-start: 1em;
span {
font-size: 0.9em;
}
}
.card__stages {
flex: 1 1 25%;
font-size: 0.8em;
padding-block: 1em;
}
.card__tags {
color: var(--bubble-color);
}
.card__tag {
color: var(--bubble-color);
font-weight: 700;
}
.card__title {
--hover-size: 0;
--input-border-radius: 0;
font-size: 2.5em;
font-weight: 900;
line-height: 1.1;
min-block-size: 3lh;
text-wrap: balance;
.cards & {
pointer-events: none;
}
.card__title-field {
&:is(textarea) {
&::placeholder {
color: inherit;
opacity: 0.5;
}
}
}
.card__title-link {
--lines: 3;
color: inherit;
}
}
.card-count__selector {
font-size: 1cqi;
inset: 0.5cqi 0.5cqi auto auto;
position: absolute;
text-align: start;
.popup {
inset: 1em 1em auto auto;
}
}
.input.boost__input {
--input-border-radius: 0;
--input-border-size: 0;
--input-padding: 0;
color: inherit;
font-size: 1.1em !important;
font-weight: inherit;
inline-size: min-content;
max-inline-size: 3ch;
min-inline-size: 1ch;
@supports (field-sizing: content) {
field-sizing: content;
}
}
.card__popped {
align-items: center;
aspect-ratio: 7/4;
border: 0.4rem solid var(--bubble-color);
position: absolute;
inset: auto 2em 2em auto;
justify-content: space-between;
padding: 0.5em 1em;
transform: rotate(-10deg);
z-index: 1;
}
.card__popped-title {
color: var(--color-ink-reversed);
font-size: 1.5em;
font-weight: 900;
text-shadow:
-2px -2px 0 var(--bubble-color),
2px -2px 0 var(--bubble-color),
-2px 2px 0 var(--bubble-color),
2px 2px 0 var(--bubble-color);
}