sokko-g/website/src/styles/_cards.scss
Shinuwa d6235c6f44
All checks were successful
Deploy Sokko G / deploy (push) Successful in 5s
fix: mask instruction order
2026-07-22 16:21:46 +02:00

386 lines
7.7 KiB
SCSS

@use "mixins";
.section-grid,
.cards,
.info-grid,
.modules {
display: grid;
gap: var(--space-4);
margin-top: var(--space-6);
}
.section-grid,
.info-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.cards {
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.feature,
.info-panel,
.module,
.empty,
.card {
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
background: rgba(16, 20, 38, 0.88);
box-shadow: var(--shadow-sm);
}
.card {
border-color: transparent;
border-radius: var(--radius-md);
background:
linear-gradient(rgba(16, 20, 38, 0.88), rgba(16, 20, 38, 0.88)) padding-box,
radial-gradient(circle at 100% 0%, rgba(34, 211, 238, 0.42), transparent 28%) border-box,
linear-gradient(135deg, rgba(246, 196, 83, 0.62) 0%, rgba(246, 196, 83, 0.42) 72%, rgba(34, 211, 238, 0.24) 100%) border-box;
}
@supports (corner-shape: scoop) {
.card {
corner-shape: scoop;
}
}
.feature,
.info-panel,
.empty {
padding: var(--space-5);
}
.feature,
.card,
.info-panel {
transition:
transform var(--duration-fast) var(--ease-standard),
border-color var(--duration-fast) var(--ease-standard),
background-color var(--duration-fast) var(--ease-standard);
}
.feature:hover,
.card:hover,
.info-panel:hover {
transform: translateY(-2px);
border-color: var(--color-border-hover);
background: rgba(21, 26, 48, 0.96);
}
.card:hover {
transform: none;
border-color: transparent;
background:
linear-gradient(rgba(21, 26, 48, 0.96), rgba(21, 26, 48, 0.96)) padding-box,
linear-gradient(135deg, rgba(139, 92, 246, 0.9), rgba(196, 181, 253, 0.72)) border-box;
box-shadow:
var(--shadow-sm),
0 0 18px rgba(139, 92, 246, 0.22),
0 0 34px rgba(196, 181, 253, 0.12);
}
.feature {
display: grid;
gap: 8px;
}
.feature strong {
color: var(--color-text-primary);
}
.page-heading,
.toolbox-head {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: var(--space-5);
}
.card {
overflow: hidden;
}
.card-cover {
min-height: 124px;
border-bottom: 1px solid rgba(246, 196, 83, 0.42);
}
.card-body {
padding: var(--space-5);
}
.card-actions {
margin-top: var(--space-5);
}
.toolbox-card {
display: flex;
min-height: 292px;
flex-direction: column;
}
.toolbox-card .card-cover {
flex: 0 0 124px;
height: 124px;
min-height: 124px;
}
.toolbox-card-cover-link,
.game-card-cover-link {
display: block;
outline-offset: -3px;
}
.toolbox-card-cover-link:hover img,
.toolbox-card-cover-link:focus-visible img,
.game-card-cover-link:hover img,
.game-card-cover-link:focus-visible img {
transform: scale(1.035);
filter: brightness(1.08);
}
.toolbox-card-cover-link img,
.game-card-cover-link img {
transition:
transform var(--duration-normal) var(--ease-standard),
filter var(--duration-normal) var(--ease-standard);
}
.toolbox-card .card-body {
display: flex;
flex: 1;
flex-direction: column;
}
.toolbox-card .card-actions {
margin-top: auto;
padding-top: var(--space-5);
}
.toolbox-page {
display: flex;
min-height: calc(100vh - 68px - var(--space-8) - var(--space-12));
flex: 1;
flex-direction: column;
gap: var(--space-4);
}
.toolbox-embedded {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.storage-help-card {
position: relative;
min-height: 292px;
overflow: hidden;
border-color: rgba(246, 196, 83, 0.22);
background:
linear-gradient(135deg, rgba(246, 196, 83, 0.1), transparent 38%),
rgba(10, 13, 29, 0.84);
}
.storage-help-card::after {
content: "";
position: absolute;
inset: 0 auto 0 0;
width: 3px;
background: var(--gradient-brand);
}
.storage-help-card .card-body {
display: flex;
min-height: 100%;
flex-direction: column;
padding: 18px;
}
.storage-help-heading {
display: grid;
grid-template-columns: 36px minmax(0, 1fr);
gap: 10px;
align-items: center;
margin-bottom: 12px;
}
.storage-help-mark {
display: grid;
width: 36px;
height: 36px;
place-items: center;
border: 1px solid rgba(246, 196, 83, 0.32);
border-radius: var(--radius-md);
background: rgba(246, 196, 83, 0.1);
color: var(--color-accent-gold);
box-shadow: 0 0 22px rgba(246, 196, 83, 0.12);
}
.storage-help-mark::before {
content: "";
width: 19px;
height: 19px;
background: currentColor;
mask: url("/static/icons/save.svg") center / contain no-repeat;
-webkit-mask: url("/static/icons/save.svg") center / contain no-repeat;
}
.storage-help-card h2 {
margin: 0;
font-size: var(--font-size-lg);
line-height: 1.2;
}
.storage-help-card .eyebrow {
color: var(--color-accent-gold);
}
.storage-help-intro {
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
line-height: 1.45;
}
.storage-help-card p,
.storage-help-card ul {
margin: 0;
}
.storage-help-list {
display: grid;
gap: 7px;
margin-top: 18px;
padding: 10px 0 0;
list-style: none;
}
.storage-help-list li {
display: grid;
grid-template-columns: 22px minmax(0, 1fr);
gap: 8px;
align-items: start;
padding: 8px 9px;
border: 1px solid rgba(150, 165, 205, 0.12);
border-radius: var(--radius-md);
background: rgba(7, 10, 24, 0.45);
}
.storage-help-list span {
display: grid;
width: 18px;
height: 18px;
place-items: center;
border-radius: var(--radius-sm);
background: rgba(139, 92, 246, 0.18);
color: var(--color-text-primary);
font-size: var(--font-size-xs);
font-weight: 800;
}
.storage-help-list p {
align-self: center;
color: var(--color-text-secondary);
font-size: var(--font-size-xs);
line-height: 1.32;
}
.storage-quota {
position: relative;
isolation: isolate;
display: grid;
gap: var(--space-3);
margin-top: auto;
padding: var(--space-4);
overflow: hidden;
border: 1px solid transparent;
border-radius: var(--radius-lg);
background: rgba(16, 20, 38, 0.58);
box-shadow: var(--shadow-sm);
}
.storage-quota::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background:
radial-gradient(circle at 92% 12%, rgba(246, 196, 83, 0.009), transparent 34%),
radial-gradient(circle at 0% 100%, rgba(139, 92, 246, 0.011), transparent 42%);
pointer-events: none;
}
.storage-quota::after {
content: "";
position: absolute;
inset: 0;
z-index: 0;
padding: 1px;
border-radius: inherit;
background:
radial-gradient(circle at 100% 0%, rgba(246, 196, 83, 0.42), transparent 34%),
linear-gradient(135deg, rgba(246, 196, 83, 0.42), rgba(139, 92, 246, 0.32) 54%, rgba(196, 181, 253, 0.24));
@include mixins.border-mask;
pointer-events: none;
}
.storage-quota > * {
position: relative;
z-index: 1;
}
.toolbox-page > .storage-quota,
.drawer-content > .storage-quota {
margin-top: auto;
}
.storage-quota > div:first-child {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-4);
color: var(--color-text-secondary);
font-size: var(--font-size-sm);
}
.storage-quota strong {
color: var(--color-text-primary);
font-size: var(--font-size-sm);
}
.storage-quota-track {
width: 100%;
height: 9px;
overflow: hidden;
border: 1px solid rgba(150, 165, 205, 0.14);
border-radius: var(--radius-pill);
background: rgba(5, 7, 17, 0.82);
}
.storage-quota-track span {
display: block;
height: 100%;
border-radius: inherit;
background: var(--gradient-brand);
box-shadow: 0 0 18px rgba(99, 102, 241, 0.32);
transition: width var(--duration-normal) var(--ease-standard);
}
.storage-quota-warning {
border-color: rgba(251, 191, 36, 0.34);
}
.storage-quota-warning .storage-quota-track span {
background: linear-gradient(135deg, #fbbf24, #f97316);
}
.storage-quota-danger {
border-color: rgba(251, 113, 133, 0.42);
}
.storage-quota-danger .storage-quota-track span {
background: linear-gradient(135deg, #fb7185, #d946ef);
}
.card-icon-button {
flex: 0 0 40px;
}