styles.css (10.0 KB)


  1 :root {
  2 	--color-shift-ms: 350ms;
  3 	--type-char-ms: 0.5ms;
  4 	--event-color: antiquewhite;
  5 	--link-pad: 6px;
  6 }
  7 
  8 html, body {
  9 	margin: 0;
 10 	height: 100%;
 11 	overflow: hidden;
 12 	overscroll-behavior: none;
 13 	background-color: var(--event-color);
 14 	transition: background-color var(--color-shift-ms) ease-in-out;
 15 	font-family: serif;
 16 }
 17 
 18 ::selection {
 19 	background: antiquewhite;
 20 }
 21 
 22 #boxes {
 23 	display: flex;
 24 	flex-direction: row;
 25 	height: 100vh;
 26 	height: 100dvh;
 27 }
 28 #left-box {
 29 	width: 50%;
 30 	height: 100%;
 31 	box-sizing: border-box;
 32 	position: relative;
 33 	overflow: hidden;
 34 	-webkit-user-select: none;
 35 	user-select: none;
 36 }
 37 #right-box {
 38 	width: 50%;
 39 	height: 100%;
 40 	box-sizing: border-box;
 41 	container: text-box / inline-size;
 42 	padding: 22px;
 43 	padding-top: 14px;
 44 	margin: 0;
 45 	color: black;
 46 	overflow-y: scroll;
 47 	overscroll-behavior: contain;
 48 	scrollbar-color: #00000060 transparent;
 49 	background-color: var(--event-color);
 50 	transition: background-color var(--color-shift-ms) ease-in-out;
 51 }
 52 
 53 #right-box ::selection {
 54 	background: black;
 55 	color: var(--event-color);
 56 }
 57 #right-box h1 {
 58 	margin: 0;
 59 	font-weight: normal;
 60 	font-size: 38px;
 61 	margin-bottom: -3px;
 62 	min-height: 44px;
 63 }
 64 #right-box p, #text-content {
 65 	font-size: 22px;
 66 	line-height: 29px;
 67 	margin-top: 16px;
 68 }
 69 #text-content > p {
 70 	margin: 0;
 71 }
 72 .detail-list {
 73 	margin: 16px 0 0;
 74 	padding-left: 1.2em;
 75 	list-style-position: outside;
 76 }
 77 .detail-list li {
 78 	margin-top: 2px;
 79 	list-style: disc;
 80 }
 81 .detail-list li::marker {
 82 	color: transparent;
 83 }
 84 .detail-list li.li-typing::marker {
 85 	color: currentColor;
 86 }
 87 
 88 .intro-list {
 89 	display: grid;
 90 	grid-template-columns: minmax(0, max-content) minmax(0, 1fr) max-content minmax(0, 1fr) max-content;
 91 	column-gap: 16px;
 92 	row-gap: 2px;
 93 	font-size: 22px;
 94 	line-height: 29px;
 95 }
 96 .intro-row {
 97 	display: grid;
 98 	grid-column: 1 / -1;
 99 	grid-template-columns: subgrid;
100 	align-items: baseline;
101 	padding: var(--link-pad);
102 	margin: 0 calc(-1 * var(--link-pad));
103 	cursor: pointer;
104 	-webkit-tap-highlight-color: transparent;
105 }
106 .intro-name {
107 	grid-column: 1;
108 	min-width: 0;
109 	white-space: nowrap;
110 	overflow: hidden;
111 	text-overflow: ellipsis;
112 	text-decoration: underline;
113 	text-underline-offset: 3px;
114 }
115 .intro-when {
116 	grid-column: 3;
117 	white-space: nowrap;
118 }
119 .intro-where {
120 	grid-column: 5;
121 	min-width: 0;
122 	white-space: nowrap;
123 	overflow: hidden;
124 	text-overflow: ellipsis;
125 }
126 @media (hover: hover) {
127 	.intro-row:hover {
128 		background: black;
129 		color: antiquewhite;
130 	}
131 	.intro-row:hover .intro-name {
132 		text-decoration: none;
133 	}
134 }
135 
136 /* panel.js drops columns by class when the title would otherwise ellipsize: date first
137    (.cols-2), then location (.cols-1). Title is always shown. */
138 .intro-list.cols-2 {
139 	grid-template-columns: minmax(0, max-content) minmax(0, 1fr) max-content;
140 }
141 .intro-list.cols-2 .intro-when {
142 	display: none;
143 }
144 .intro-list.cols-2 .intro-where {
145 	grid-column: 3;
146 }
147 .intro-list.cols-1 {
148 	grid-template-columns: minmax(0, 1fr);
149 }
150 .intro-list.cols-1 .intro-when,
151 .intro-list.cols-1 .intro-where {
152 	display: none;
153 }
154 
155 #text-content, #text-title, #action-wrap {
156 	transition: opacity 0.125s ease-in-out;
157 }
158 .type-hidden {
159 	visibility: hidden;
160 }
161 #text-content.fading, #text-title.fading, #action-wrap.fading {
162 	opacity: 0;
163 }
164 
165 #action-wrap {
166 	margin-top: 25px;
167 	margin-bottom: 50px;
168 	text-align: center;
169 }
170 .action-row {
171 	font-size: 22px;
172 	line-height: 29px;
173 }
174 .action-row + .action-row {
175 	margin-top: 18px;
176 }
177 .action-link {
178 	display: inline-block;
179 	color: #000000;
180 	text-decoration: underline;
181 	text-underline-offset: 3px;
182 	padding: var(--link-pad);
183 	margin: calc(-1 * var(--link-pad));
184 	cursor: pointer;
185 	-webkit-tap-highlight-color: transparent;
186 }
187 .intro-row, .action-link {
188 	position: relative;
189 }
190 .intro-row::before, .intro-row::after,
191 .action-link::before, .action-link::after {
192 	content: "";
193 	position: absolute;
194 	left: 0;
195 	right: 0;
196 	height: 3px;
197 }
198 .intro-row::before, .action-link::before {
199 	top: -3px;
200 }
201 .intro-row::after, .action-link::after {
202 	bottom: -3px;
203 }
204 @media (hover: hover) {
205 	a.action-link:hover {
206 		background: black;
207 		color: var(--event-color);
208 		text-decoration: none;
209 	}
210 }
211 
212 .action-typing {
213 	position: relative;
214 	display: inline-block;
215 	text-align: left;
216 	white-space: pre;
217 }
218 .action-sizer {
219 	visibility: hidden;
220 }
221 .action-shown {
222 	position: absolute;
223 	left: var(--link-pad);
224 	top: var(--link-pad);
225 	text-decoration: underline;
226 	text-underline-offset: 3px;
227 }
228 
229 #map-stage {
230 	position: absolute;
231 	top: 50%;
232 	left: 50%;
233 	transform-origin: center center;
234 	will-change: transform;
235 }
236 #map-stage:not([style*="width"]) {
237 	inset: 0;
238 	top: 0;
239 	left: 0;
240 }
241 
242 #map-container {
243 	height: 100%;
244 }
245 
246 #map-container .leaflet-tile,
247 #map-container .leaflet-tile-container,
248 #map-container canvas.leaflet-tile-container {
249 	pointer-events: none;
250 }
251 
252 #map-container .leaflet-zoom-anim .leaflet-zoom-animated {
253 	transition: transform 0.12s cubic-bezier(0, 0, 0.25, 1);
254 }
255 
256 #map-container.map-grabbing,
257 #map-container.map-grabbing .leaflet-grab,
258 #map-container.map-grabbing .leaflet-interactive {
259 	cursor: grabbing !important;
260 }
261 
262 #compass {
263 	display: none;
264 	position: absolute;
265 	right: 12px;
266 	bottom: 12px;
267 	z-index: 1000;
268 	width: 48px;
269 	height: 48px;
270 	border-radius: 50%;
271 	background: rgba(255, 255, 255, 0.7);
272 	-webkit-backdrop-filter: blur(8px);
273 	backdrop-filter: blur(8px);
274 	-webkit-tap-highlight-color: transparent;
275 	box-shadow: 0 1px 3px #00000040;
276 	transition: box-shadow 0.12s linear;
277 	align-items: center;
278 	justify-content: center;
279 	pointer-events: none;
280 }
281 #compass.compass-enabled {
282 	display: flex;
283 }
284 @media (pointer: coarse) {
285 	#compass::after {
286 		content: "";
287 		position: absolute;
288 		top: 0;
289 		left: 0;
290 		right: -12px;
291 		bottom: -12px;
292 		border-radius: 24px 0 0 0;
293 	}
294 }
295 #compass svg {
296 	display: block;
297 	transform-origin: center center;
298 	transform: rotate(var(--compass-angle, 0deg));
299 }
300 #compass .needle-n { fill: #e8483a; }
301 #compass .needle-s { fill: #b8bcc2; }
302 #compass .needle-hub { fill: #fafafa; stroke: #b8bcc2; stroke-width: 1; }
303 #compass.active {
304 	box-shadow: 0 1px 3px #00000040, inset 0 0 0 2.5px cornflowerblue;
305 }
306 #compass.active.paused {
307 	box-shadow: 0 1px 3px #00000040, inset 0 0 0 2.5px #b8bcc2;
308 }
309 #compass .compass-ring {
310 	position: absolute;
311 	inset: 0;
312 	transform: rotate(-90deg);
313 	pointer-events: none;
314 }
315 #compass .ring-arc {
316 	fill: none;
317 	stroke: cornflowerblue;
318 	stroke-width: 2.5;
319 	stroke-dasharray: 100;
320 	stroke-dashoffset: 100;
321 }
322 
323 .ladybug-line-svg {
324 	position: absolute;
325 	top: 0;
326 	left: 0;
327 	width: 1px;
328 	height: 1px;
329 	pointer-events: none;
330 	overflow: visible;
331 	display: none;
332 }
333 .ladybug-line-svg.visible {
334 	display: block;
335 }
336 .ladybug-line {
337 	stroke-width: 4;
338 	stroke-linecap: round;
339 	fill: none;
340 }
341 
342 .ladybug-pin {
343 	width: 40px;
344 	height: 40px;
345 	display: flex;
346 	align-items: center;
347 	justify-content: center;
348 	font-size: 30px;
349 	line-height: 1;
350 	transform: rotate(var(--pin-counter, 0deg));
351 	transform-origin: center center;
352 	opacity: 0;
353 	transition: opacity 0.4s ease;
354 }
355 .ladybug-pin.visible {
356 	opacity: 1;
357 }
358 
359 .map-error {
360 	display: flex;
361 	align-items: center;
362 	justify-content: center;
363 	box-sizing: border-box;
364 	padding: 22px;
365 	background: #f0eee4;
366 	color: black;
367 	font-weight: normal;
368 	font-size: 38px;
369 	text-align: center;
370 	-webkit-user-select: none;
371 	user-select: none;
372 }
373 
374 .event-pin {
375 	width: 48px;
376 	height: 48px;
377 	box-sizing: border-box;
378 	padding: 4px 6px;
379 	transform: rotate(var(--pin-counter, 0deg));
380 	transform-origin: center center;
381 	display: flex;
382 	flex-direction: column;
383 	justify-content: center;
384 	font-family: -apple-system, Arial, Helvetica, sans-serif;
385 	line-height: 1.1;
386 	color: black;
387 	text-align: center;
388 	box-shadow: 0 1px 3px #00000040;
389 	cursor: pointer;
390 	border-radius: 0;
391 	transition: border-radius 150ms ease-in-out;
392 }
393 .event-pin.active {
394 	border-radius: 50%;
395 }
396 .event-pin .pin-month {
397 	font-size: 11px;
398 	text-transform: uppercase;
399 	letter-spacing: 0.5px;
400 }
401 .event-pin .pin-day {
402 	font-size: 18px;
403 	font-weight: bold;
404 }
405 
406 @media (orientation: portrait) {
407 	#boxes {
408 		flex-direction: column;
409 	}
410 	#left-box, #right-box {
411 		width: 100%;
412 		height: 50%;
413 	}
414 }
415 
416 #flyer {
417 	display: none;
418 }
419 
420 #flyer.flyer-measuring {
421 	display: flex;
422 	flex-direction: column;
423 	position: fixed;
424 	left: -9999px;
425 	top: 0;
426 	width: 197.3mm;
427 	height: 266.7mm;
428 	box-sizing: border-box;
429 	font-family: serif;
430 	color: #000;
431 	background: #fff;
432 }
433 
434 .flyer-body {
435 	flex: 1 1 auto;
436 	display: flex;
437 	flex-direction: column;
438 	min-height: 0;
439 	overflow: hidden;
440 }
441 .flyer-title {
442 	margin: 1.5mm 0 7mm;
443 	font-weight: normal;
444 	font-size: 48pt;
445 	line-height: 1.05;
446 	overflow-wrap: break-word;
447 }
448 .flyer-flow {
449 	flex: 1 1 auto;
450 	min-height: 0;
451 	display: flow-root;
452 }
453 .flyer-desc {
454 	margin: 0;
455 	text-align: justify;
456 }
457 .flyer-details {
458 	margin: 7mm 0;
459 	padding-left: 1.2em;
460 	list-style: disc;
461 }
462 .flyer-details li {
463 	margin-top: 0.15em;
464 }
465 
466 .flyer-flow > .flyer-qr {
467 	float: right;
468 	margin-left: 7mm;
469 	margin-bottom: 7mm;
470 	margin-top: 2mm;
471 }
472 
473 .flyer-tabs {
474 	flex: 0 0 auto;
475 	display: flex;
476 	height: 78mm;
477 	border-top: 1px dashed #000;
478 }
479 .flyer-tab {
480 	flex: 1 1 0;
481 	position: relative;
482 	overflow: hidden;
483 	border-left: 1px dashed #000;
484 }
485 .flyer-tab:last-child {
486 	border-right: 1px dashed #000;
487 }
488 .flyer-tab-inner {
489 	position: absolute;
490 	top: 50%;
491 	left: 50%;
492 	width: 78mm;
493 	height: 19.73mm;
494 	transform: translate(-50%, -50%) rotate(90deg);
495 	transform-origin: center center;
496 	box-sizing: border-box;
497 	padding: 2.5mm 2.5mm 2.5mm 1.5mm;
498 	display: flex;
499 	flex-direction: row;
500 	align-items: center;
501 	justify-content: center;
502 	gap: 2.5mm;
503 	overflow: hidden;
504 	font-size: 7pt;
505 }
506 .flyer-tab-text {
507 	flex: 1 1 auto;
508 	min-width: 0;
509 	text-align: left;
510 }
511 .flyer-tab-title {
512 	font-size: 1.3em;
513 	font-weight: bold;
514 	line-height: 1.1;
515 	overflow-wrap: break-word;
516 }
517 .flyer-tab-when,
518 .flyer-tab-where {
519 	margin-top: 0.1em;
520 	line-height: 1.15;
521 }
522 .flyer-tab .flyer-qr {
523 	flex: 0 0 auto;
524 }
525 
526 @page {
527 	size: auto;
528 	margin: 0;
529 }
530 
531 @media print {
532 	.flyer-print * {
533 		-webkit-print-color-adjust: exact !important;
534 		print-color-adjust: exact !important;
535 	}
536 	html.flyer-print, .flyer-print body {
537 		background: #fff !important;
538 	}
539 	.flyer-print #boxes {
540 		display: none !important;
541 	}
542 	.flyer-print #flyer {
543 		display: flex !important;
544 		flex-direction: column;
545 		width: 197.3mm;
546 		height: 266.7mm;
547 		margin: 6.35mm auto;
548 		box-sizing: border-box;
549 		font-family: serif;
550 		color: #000;
551 		background: #fff;
552 	}
553 }