main.css (7.1 KB)


  1 /* custom colors */
  2 :root {
  3 	--coconut: #ffffff;
  4 	--licorice: #000000;
  5 	--wasabi: #ccff00;
  6 	--eggplant: #7700ff;
  7 
  8 	--murk: #8e9918;
  9 	--tadpole: #27350f;
 10 	--lilypad: #6f8823;
 11 	--reed: #4a5d23;
 12 
 13 	--pollen: #f4a127;
 14 	--loam: #5a352b;
 15 	--chlorophyll: #5aa83b;
 16 	--terracotta: #b15c2e;
 17 
 18 	--wheat: #d2c3a3;
 19 	--earth: #4a3c31;
 20 	--pumpkin: #cb7c52;
 21 	--tobacco: #7d6c55;
 22 
 23 	--moss: #20302f;
 24 	--goat-milk: #d8d3c9;
 25 	--burl: #231f20;
 26 	--flame: #c63728;
 27 
 28 	--soot: #181a1b;
 29 	--smoke: #e8e6e3;
 30 	--ash: #252829;
 31 	--cinder: #ff5532;
 32 
 33 	--blue-raspberry: #0458b3;
 34 	--cola: #1e1515;
 35 	--bubblegum: #e11761;
 36 	--taffy: #eaeaea;
 37 
 38 	--muscat: #663399;
 39 	--cask: #722f37;
 40 	--bloom: #f8f6ff;
 41 }
 42 
 43 /* custom fonts */
 44 @font-face {
 45 	font-family: BasteleurMoonlight;
 46 	src: url('fonts/Basteleur-Moonlight.ttf') format('truetype');
 47 }
 48 
 49 /* themes */
 50 :root[data-theme="gak"] {
 51 	--background: var(--coconut);
 52 	--text: var(--licorice);
 53 	--highlight: var(--wasabi);
 54 	--accent: var(--eggplant);
 55 	--icon: '🫟';
 56 }
 57 
 58 :root[data-theme="swamp"] {
 59 	--background: var(--murk);
 60 	--text: var(--tadpole);
 61 	--highlight: var(--lilypad);
 62 	--accent: var(--reed);
 63 	--icon: '🦠';
 64 }
 65 
 66 :root[data-theme="sunflower"] {
 67 	--background: var(--pollen);
 68 	--text: var(--loam);
 69 	--highlight: var(--chlorophyll);
 70 	--accent: var(--terracotta);
 71 	--icon: '🌻';
 72 }
 73 
 74 :root[data-theme="harvest"] {
 75 	--background: var(--wheat);
 76 	--text: var(--earth);
 77 	--highlight: var(--pumpkin);
 78 	--accent: var(--tobacco);
 79 	--icon: '🌾';
 80 }
 81 
 82 :root[data-theme="medieval"] {
 83 	--background: var(--moss);
 84 	--text: var(--goat-milk);
 85 	--highlight: var(--burl);
 86 	--accent: var(--flame);
 87 	--icon: '⚔️';
 88 	& input[type="text"] {
 89 		font-family: BasteleurMoonlight, Arial, sans-serif;
 90 	}
 91 }
 92 
 93 :root[data-theme="woodstove"] {
 94 	--background: var(--soot);
 95 	--text: var(--smoke);
 96 	--highlight: var(--ash);
 97 	--accent: var(--cinder);
 98 	--icon: '🪵';
 99 	& input[type="text"] {
100 		font-family: BasteleurMoonlight, Arial, sans-serif;
101 	}
102 	.parent-task {
103 		--text: var(--cinder)
104 	}
105 }
106 
107 :root[data-theme="sugar"] {
108 	--background: var(--cola);
109 	--text: var(--taffy);
110 	--highlight: var(--blue-raspberry);
111 	--accent: var(--bubblegum);
112 	--icon: '🍬';
113 
114 	.checkbox-label {
115 		border-radius: 10px;
116 	}
117 	.active {
118 		border-radius: 30px 0px 0px 30px;
119 	}
120 	.custom-checkbox:checked + .checkbox-label::before {
121 		display: none;
122 	}
123 	& input[type="text"] {
124 		text-shadow: 1px 1px 1px var(--cola);
125 	}
126 	input[type="text"]::selection {
127 		color: var(--text);
128 	}
129 }
130 
131 :root[data-theme="vineyard"] {
132 	--background: var(--bloom);
133 	--text: var(--cask);
134 	--highlight: var(--muscat);
135 	--accent: var(--muscat);
136 	--icon: '🍇';
137 	& input[type="text"] {
138 		font-family: BasteleurMoonlight;
139 	}
140 	input[type="text"]::selection {
141 		background-color: var(--background);
142 		color: var(--text);
143 		text-shadow: none;
144 	}
145 	.active {
146 		border-radius: 30px 0px 0px 30px;
147 	}
148 	.active input[type="text"] {
149 		color: var(--bloom);
150 		text-shadow: 1px 1px 2px black;
151 	}
152 	.checkbox-label {
153 		border-radius: 50%;
154 		border: none;
155 		background: radial-gradient(circle at 30% 30%, #d4a5d8, #b19cd9, #8a4baf);
156 		box-shadow: 
157 			inset 1px 1px 3px rgba(0,0,0,0.4),
158 			inset -1px -1px 2px rgba(255,255,255,0.3),
159 			0 1px 2px rgba(0,0,0,0.3);
160 	}
161 	.custom-checkbox:checked + .checkbox-label {
162 		background: radial-gradient(circle at 30% 30%, #b19cd9, #8a4baf, #663399);
163 		box-shadow: 
164 			inset -2px -2px 4px rgba(0,0,0,0.3),
165 			inset 1px 1px 2px rgba(255,255,255,0.5),
166 			1px 1px 2px rgba(0,0,0,0.6);
167 	}
168 	.active .custom-checkbox:checked + .checkbox-label {
169 		box-shadow: 
170 			inset -2px -2px 4px rgba(0,0,0,0.3),
171 			inset 1px 1px 2px rgba(255,255,255,0.5),
172 			3px 3px 6px rgba(0,0,0,0.6);
173 	}
174 	.custom-checkbox:checked + .checkbox-label::before {
175 		display: none;
176 	}
177 	.custom-checkbox:indeterminate + .checkbox-label::before {
178 		content: '';
179 		position: absolute;
180 		left: 50%;
181 		top: 50%;
182 		width: 50%;
183 		height: 50%;
184 		border-radius: 50%;
185 		background: radial-gradient(circle at 30% 30%, #b19cd9, #8a4baf, #663399);
186 		box-shadow: 
187 			inset -1px -1px 2px rgba(0,0,0,0.3),
188 			inset 0.5px 0.5px 1px rgba(255,255,255,0.5);
189 		transform: translate(-50%, -50%);
190 	}
191 	scrollbar-color: color-mix(in srgb, var(--muscat) 75%, transparent) color-mix(in srgb, var(--bloom) 75%, transparent);
192 }
193 
194 /* interface styling */
195 @keyframes shake {
196 	0% { transform: translateX(0); }
197 	20% { transform: translateX(3px); }
198 	40% { transform: translateX(-3px); }
199 	60% { transform: translateX(3px); }
200 	80% { transform: translateX(-3px); }
201 	100% { transform: translateX(0); }
202 }
203 .shake {
204 	animation: shake 0.25s ease-out;
205 }
206 @keyframes shake-vertical {
207 	0% { transform: translateY(0); }
208 	20% { transform: translateY(3px); }
209 	40% { transform: translateY(-3px); }
210 	60% { transform: translateY(3px); }
211 	80% { transform: translateY(-3px); }
212 	100% { transform: translateY(0); }
213 }
214 .shake-vertical {
215 	animation: shake-vertical 0.25s ease-out;
216 }
217 html {
218 	scroll-behavior: smooth;
219 	overflow-y: scroll;
220 	overflow-x: hidden;
221 	scrollbar-width: auto;
222 	scrollbar-color: color-mix(in srgb, var(--text) 75%, transparent) color-mix(in srgb, var(--background) 75%, transparent);
223 }
224 body {
225 	font-family: Arial, sans-serif;
226 	max-width: 800px;
227 	margin: 0 auto;
228 	padding: 0px 20px 20px 20px;
229 	background-color: var(--background);
230 	color: var(--text);
231 }
232 ul {
233 	list-style-type: none;
234 	padding-left: 20px;
235 }
236 input[type="text"] {
237 	border: none;
238 	background: transparent;
239 	font-size: 1.17em;
240 	font-weight: bold;
241 	width: calc(100% - 30px);
242 	margin-left: 5px;
243 	padding: 5px;
244 	color: var(--text);
245 	overflow: hidden;
246 	text-overflow: ellipsis;
247 	white-space: nowrap;
248 }
249 input[type="text"]:focus {
250 	outline: none;
251 }
252 input[type="text"]::selection {
253 	background-color: var(--accent);
254 	color: var(--background);
255 }
256 .task-container {
257 	display: flex;
258 	align-items: center;
259 	margin: 5px 0;
260 	padding-left: 11px;
261 	padding-top: 4px;
262 	padding-bottom: 4px;
263 }
264 .active {
265 	background-color: var(--highlight);
266 }
267 .sticky-header {
268 	position: sticky;
269 	top: 0;
270 	background-color: var(--background);
271 	z-index: 1;
272 	padding-top: 20px;
273 }
274 .parent-task {
275 	font-size: 1.5em;
276 	font-weight: bold;
277 }
278 #breadcrumbs {
279 	font-size: 24px;
280 	margin-bottom: 10px;
281 	color: var(--text);
282 	user-select: none;
283 }
284 .custom-checkbox {
285 	display: none;
286 }
287 .checkbox-label {
288 	display: inline-block;
289 	width: 20px;
290 	height: 20px;
291 	background-color: var(--background);
292 	border: 2px solid var(--accent);
293 	position: relative;
294 	cursor: pointer;
295 	box-sizing: border-box;
296 	border-radius: 4px;
297 }
298 .custom-checkbox:checked + .checkbox-label {
299 	background-color: var(--accent);
300 }
301 .custom-checkbox:checked + .checkbox-label::before {
302 	content: '';
303 	position: absolute;
304 	left: 6px;
305 	top: 2px;
306 	width: 5px;
307 	height: 10px;
308 	border: solid var(--background);
309 	border-width: 0 2px 2px 0;
310 	transform: rotate(45deg);
311 	box-sizing: border-box;
312 }
313 .custom-checkbox:indeterminate + .checkbox-label::before {
314 	content: '';
315 	position: absolute;
316 	left: 25%;
317 	right: 25%;
318 	top: 50%;
319 	height: 2px;
320 	background-color: var(--accent);
321 	transform: translateY(-50%);
322 }
323 
324 /* print styles */
325 @media print {
326 	body * {
327 		visibility: hidden;
328 	}
329 	#print-content, #print-content * {
330 		visibility: visible;
331 	}
332 	#print-content {
333 		position: absolute;
334 		left: 0;
335 		top: 0;
336 		font-family: monospace;
337 		font-size: 12pt;
338 		line-height: 1.4;
339 		white-space: pre-wrap;
340 		color: black;
341 		background: white;
342 	}
343 	#app-container {
344 		display: none;
345 	}
346 }