summaryrefslogtreecommitdiffstats
path: root/assets/css/components/_project.scss
blob: 62a7118375ee4ecb927d0f8af5e07cd8e822fc54 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@include namespace('project') {
    @include store((
        --colors: (
            --bg: prop(--colors --bg-hi, $global: true),
        )
    ));

    @include component(namespace()) {
        position: relative;

        &::before {
            content:          '';
            display:          block;
            padding-top:      12em;
            padding-bottom:   25%;
            background-color: prop(--colors --bg);
        }

        &::after {
            content:          '';
            background-image: linear-gradient(340deg, rgba(#000, .25) 5em, transparent 18em);
        }

        &:link,
        &:visited {
            &:hover {
                @include element('picture') {
                    opacity: .75;
                }

                @include element('card') {
                    transform: translateY(-1em);
                }
            }
        }

        @include multi('element' 'picture', '&::after') {
            display:          block;
            position:         absolute;
            z-index:          10;
            top:              0;
            left:             0;
            width:            100%;
            height:           100%;
            object-fit:       cover;
            object-position:  center center;
        }

        @include element('card') {
            position:   absolute;
            z-index:    20;
            right:      1em;
            bottom:     1em;
            min-width:  15em;
            max-width:  calc(100% - 2em);
            transform:  translateY(0);
            transition: transform .2s;
            box-shadow: 0 .3em 1em rgba(#000, .25);
        }

        @include element('picture') {
            transition: opacity .2s;
            opacity:    1;
        }

        @include media('<=sm') {
            &::after {
                background-image: linear-gradient(to top, rgba(#000, .25) 1em, transparent 11em);
            }
        }
    }
}