style.css
⎇
Raw
1* {
2 box-sizing: border-box;
3 margin: 0;
4 padding: 0;
5 color: var(--text-color);
6 accent-color: var(--color-d);
7}
8
9html,
10button,
11select {
12 font-family: ark-latin, sans-serif;
13 font-size: 16px;
14 line-height: 1.5rem;
15}
16
17:root {
18 --color-a: oklch(0.41 0.0178 201.81);
19 --color-b: oklch(0.62 0.0664 60.49);
20 --color-c: oklch(0.33 0.0144 217.83);
21 --color-c-highlight: oklch(from var(--color-c) 0.45 c h);
22 --color-d: oklch(0.67 0.1326 259.65);
23 --text-color: oklch(0.87 0 0);
24 --min-width: 350px;
25}
26
27button,
28select,
29option {
30 display: flex;
31 place-items: center;
32 padding: 0.25rem 0.5rem;
33 border: none;
34 background-color: var(--color-d);
35 color: oklch(0.26 0 0);
36
37 /* hover styles only where a pointer can actually hover, so a tap does not stick */
38 @media (hover: hover) {
39 &:hover {
40 background-color: oklch(from var(--color-d) 0.85 c h);
41 }
42 }
43}
44
45select:disabled {
46 background-color: var(--color-d);
47 color: oklch(0.5 0 0);
48 @media (hover: hover) {
49 &:hover {
50 background-color: var(--color-d);
51 }
52 }
53}
54
55input:disabled {
56 color: oklch(0.5 0 0);
57}
58
59button {
60 cursor: pointer;
61 &:disabled {
62 cursor: default;
63 }
64}
65
66svg {
67 flex-shrink: 0;
68}
69
70button:has(> svg) {
71 padding: 0;
72 background: none;
73 @media (hover: hover) {
74 &:hover {
75 background: none;
76 }
77 }
78}
79
80html {
81 min-width: var(--min-width);
82 min-height: 600px;
83 background-image: url("data:image/svg+xml,<svg id='patternId' width='100%' height='100%' xmlns='http://www.w3.org/2000/svg'><defs><pattern id='a' patternUnits='userSpaceOnUse' width='100' height='82' patternTransform='scale(2) rotate(0)'><rect x='0' y='0' width='100%' height='100%' fill='%23404e4fff'/><path d='M74.4-14.6l-24 41.1h48l-24-41.1zm0 82l-24 41.1h48l-24-41.1z' stroke-width='1' stroke='none' fill='%23a37c5cff'/><path d='M0 0l24 41.1L48 0H0zm-1.6 26.5l-24 41.1h48l-24-41.1zm100 0l-24 41.1h48l-24-41.1z' stroke-width='1' stroke='none' fill='%232c373aff'/><path d='M24 41.1l24 41.1 24-41.1H24z' stroke-width='1' stroke='none' fill='%23726f69ff'/></pattern></defs><rect width='800%' height='800%' transform='translate(0,0)' fill='url(%23a)'/></svg>");
84}
85
86html,
87body,
88#root,
89.app-container {
90 height: 100%;
91}
92
93.app-container {
94 display: flex;
95 flex-direction: column;
96 max-width: 1200px;
97 margin: 0 auto;
98 background-color: var(--color-a);
99 box-shadow: 0 0 40px rgba(0, 0, 0, 0.8);
100
101 & > .app-header {
102 display: flex;
103 gap: 1.5rem;
104 justify-content: space-between;
105 padding: 1rem;
106 border-bottom: 1px solid var(--color-c);
107 & > .app-buttons {
108 display: flex;
109 flex-wrap: wrap;
110 gap: 1.5rem;
111 justify-content: end;
112 & > .signin-offline-group {
113 & > .offline-button {
114 text-wrap: nowrap;
115 width: min-content;
116 }
117 }
118 & > div {
119 display: flex;
120 gap: 1.5rem;
121 }
122 }
123 }
124
125 & > .main-content {
126 position: relative; /* for the loading screen in the file browser*/
127 display: flex;
128 flex: 1;
129 overflow: hidden;
130 }
131}
132
133.title {
134 text-wrap: nowrap;
135 font-size: 1.5rem;
136 font-weight: bold;
137}
138
139@media (min-width: 751px) {
140 .filebrowser-toggle {
141 display: none;
142 }
143}
144
145.spacer {
146 flex-grow: 1;
147}
148
149input {
150 background: none;
151 border: 1px solid var(--color-c);
152 padding: 0.25rem;
153}
154
155.cover {
156 position: relative;
157 height: 25%;
158 border-top: 1px solid var(--color-c);
159 display: flex;
160 justify-content: center;
161 & > img {
162 padding: 0.5rem;
163 object-fit: contain;
164 max-height: 100%;
165 max-width: 100%;
166 }
167 & > .video-element {
168 display: none;
169 }
170}
171