@use 'iro-sass/src/index' as iro; @use 'iro-design/src/functions' as fn; @use '../functions' as fn2; @include iro.props-namespace('card') { @include iro.props-store(( --dims: ( --hover-offset: fn2.px-to-em(-5px), --indicator: ( --width: 1em, --height: 4px, ), ) ), 'dims'); @include iro.props-store(( --colors: ( --bg: fn.global-color(--bg-hi2), --fg: fn.global-color(--fg), --unread: fn.global-color(--obj-hi), --border: fn.global-color(--obj-hi), --hover: ( --bg: fn.global-color(--fg-lo), --fg: fn.global-color(--bg-hi2), ), ) ), 'colors'); @include iro.props-store(( --colors: ( --bg: fn.global-color(--obj-hi), --unread: fn.global-color(--bg), --border: fn.global-color(--obj-hi), ) ), 'colors-dark'); @include iro.bem-component(iro.props-namespace()) { display: block; position: relative; transform: translateY(0); transition: transform .2s, background-color .2s, color .2s, border-color .2s; background-color: fn.color(--bg); color: fn.color(--fg); line-height: 1.4; &::after { content: ''; display: none; position: absolute; top: 100%; left: 0; width: 100%; height: calc(-1 * fn.dim(--hover-offset)); } small, strong { transition: color .2s; } &:link, &:visited { text-decoration: none; &:hover, &:focus { transform: translateY(fn.dim(--hover-offset)); background-color: fn.color(--hover --bg); color: fn.color(--hover --fg); &::after { display: block; } small, strong { color: fn.color(--hover --fg); } @include iro.bem-elem('row') { @include iro.bem-modifier('hidden') { visibility: visible; transition: opacity .2s; opacity: 1; } } @include iro.bem-elem('indicator') { color: fn.color(--hover --fg); } } } &:visited { @include iro.bem-elem('indicator') { color: fn.color(--bg); } } @include iro.bem-modifier('outline') { border: 1px solid fn.color(--border); background-color: transparent; &:link, &:visited { &:hover, &:focus { border-color: transparent; } } } @include iro.bem-elem('row') { @include iro.bem-modifier('hidden') { visibility: hidden; position: absolute; z-index: 10; right: 0; bottom: 0; left: 0; transition: opacity .2s, visibility 0s .2s; opacity: 0; background-color: fn.color(--hover --bg); @media (hover: none) { visibility: visible; position: static; opacity: 1; background-color: transparent; } } } @include iro.bem-elem('thumbnail') { position: relative; width: 100%; height: 2em; padding-top: 50%; } @include iro.bem-elem('thumbnail-img') { display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; } @include iro.bem-elem('indicator') { transition: color .2s; color: fn.color(--unread); &::before { content: ''; display: block; width: fn.dim(--indicator --width); height: fn.dim(--indicator --height); border-radius: fn.dim(--indicator --height); background-color: currentColor; } } @media print { border: 2px solid currentColor; } } }