summaryrefslogtreecommitdiffstats
path: root/src/styles/components/_site-footer.scss
diff options
context:
space:
mode:
authorVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
committerVolpeon <git@volpeon.ink>2026-07-22 19:40:59 +0200
commitc1e28224aa2e1450031669d9a7e359b63e04687d (patch)
tree68f3d8905c763a91f68001d868197effa92adafa /src/styles/components/_site-footer.scss
downloadcorvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.gz
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.tar.bz2
corvos-website-c1e28224aa2e1450031669d9a7e359b63e04687d.zip
Init
Diffstat (limited to 'src/styles/components/_site-footer.scss')
-rw-r--r--src/styles/components/_site-footer.scss157
1 files changed, 157 insertions, 0 deletions
diff --git a/src/styles/components/_site-footer.scss b/src/styles/components/_site-footer.scss
new file mode 100644
index 0000000..33608ff
--- /dev/null
+++ b/src/styles/components/_site-footer.scss
@@ -0,0 +1,157 @@
1@use "sass:math";
2@use "sass:meta";
3
4@use "pkg:iro-design" as iro;
5@use "pkg:iro-sass/bem";
6@use "pkg:iro-sass/props";
7
8@forward "site-footer.vars";
9@use "site-footer.vars" as vars;
10
11@mixin styles {
12 @include iro.props--materialize-at-root(meta.module-variables("vars"));
13
14 @property --site-footer--l1-y {
15 initial-value: 0px;
16 inherits: true;
17 syntax: "<length>";
18 }
19
20 @property --site-footer--cloud-y {
21 initial-value: 0px;
22 inherits: true;
23 syntax: "<length>";
24 }
25
26 @property --site-footer--moon-y {
27 initial-value: 0px;
28 inherits: true;
29 syntax: "<length>";
30 }
31
32 @property --site-footer--star-y {
33 initial-value: 0px;
34 inherits: true;
35 syntax: "<length>";
36 }
37
38 @keyframes footer-l1-ani {
39 from {
40 --site-footer--l1-y: -300px;
41 --site-footer--cloud-y: -400px;
42 --site-footer--moon-y: -500px;
43 --site-footer--star-y: -500px;
44 }
45 to {
46 --site-footer--l1-y: 300px;
47 --site-footer--cloud-y: 400px;
48 --site-footer--moon-y: 500px;
49 --site-footer--star-y: 500px;
50 }
51 }
52
53 @include bem.component("site-footer") {
54 position: sticky;
55 inset-block-start: 100%;
56
57 @include bem.elem("banner") {
58 position: relative;
59 display: flex;
60 block-size: 33rem;
61 justify-content: end;
62 overflow: hidden;
63 background: linear-gradient(
64 to bottom,
65 props.get(vars.$colors, --bg-from) 35%,
66 props.get(vars.$colors, --bg) 85%
67 );
68
69 animation-name: footer-l1-ani;
70 //animation-fill-mode: both;
71 animation-duration: 1ms;
72 animation-timeline: view(block 0% 0%);
73 animation-timing-function: linear;
74 }
75
76 @include bem.elem("banner-img") {
77 position: relative;
78 z-index: 2;
79 flex: 0 0 auto;
80 display: block;
81 block-size: 100%;
82 margin-inline: auto;
83 aspect-ratio: 3840 / 1600;
84 }
85
86 @include bem.elem("banner-bg") {
87 position: absolute;
88 inset-inline-start: 50%;
89 inset-block-end: 0;
90 z-index: 1;
91 display: block;
92 inline-size: 100%;
93 block-size: 100%;
94 transform: translateX(-50%);
95 }
96
97 @include bem.elem("content-wrap") {
98 padding-block-end: props.get(iro.$core--size--400);
99 background-color: props.get(iro.$core--transparent-colors, --black, --900);
100 }
101
102 @include bem.elem("content") {
103 display: flex;
104 flex-wrap: wrap;
105 gap: props.get(iro.$core--size--600);
106 }
107
108 @include bem.elem("sections") {
109 display: flex;
110 flex-wrap: wrap;
111 gap: props.get(iro.$core--size--400) props.get(iro.$core--size--800);
112 }
113
114 @include bem.elem("table") {
115 display: grid;
116 grid-template-columns: auto auto auto auto;
117 column-gap: props.get(iro.$core--size--200);
118 }
119
120 @include bem.elem("table-row") {
121 display: contents;
122 }
123
124 @include bem.elem("divider") {
125 display: none;
126 }
127
128 @include bem.elem("logo") {
129 margin-block: auto;
130 margin-inline-start: auto;
131 }
132
133 @include iro.media--media("<=md") {
134 @include bem.elem("content") {
135 flex-direction: column;
136 align-items: center;
137 }
138
139 @include bem.elem("divider") {
140 display: flex;
141 inline-size: 100%;
142 }
143
144 @include bem.elem("logo") {
145 margin-inline-start: 0;
146 }
147 }
148
149 @include iro.media--media("<=sm") {
150 transform: translateY(calc(-1 * props.get(iro.$o-navbar--block-size)));
151
152 @include bem.elem("banner-img") {
153 transform: translateX(max(0rem, 19rem - 50vw));
154 }
155 }
156 }
157}