Graphical PDS migrator for AT Protocol
at main 244 lines 5.2 kB view raw
1@import "tailwindcss"; 2@import url("https://api.fonts.coollabs.io/css2?family=Share+Tech+Mono&display=swap"); 3 4@font-face { 5 font-family: "Skyfont"; 6 src: url("fonts/skyfont.regular.otf") format("opentype"); 7 font-weight: normal; 8 font-style: normal; 9} 10 11@font-face { 12 font-family: "F25_Bank_Printer"; 13 src: url("fonts/F25_Bank_Printer.ttf") format("truetype"); 14 font-weight: normal; 15 font-style: normal; 16} 17 18@font-face { 19 font-family: "SpaceMono"; 20 src: url("fonts/SpaceMono-Regular.ttf") format("truetype"); 21 font-weight: normal; 22 font-style: normal; 23} 24 25@layer theme, base, components, utilities; 26@import "tailwindcss/theme.css" layer(theme); 27@import "tailwindcss/preflight.css" layer(base); 28@import "tailwindcss/utilities.css" layer(utilities); 29 30 31@keyframes fadeOut { 32 0% { 33 opacity: 1; 34 } 35 36 75% { 37 opacity: 1; 38 } 39 40 /* Hold full opacity for most of the animation */ 41 100% { 42 opacity: 0; 43 } 44} 45 46.status-message-fade { 47 animation: fadeOut 2s forwards; 48} 49 50.font-spectral { 51 font-family: "Spectral", serif; 52} 53 54.grow-wrap { 55 /* easy way to plop the elements on top of each other and have them both sized based on the tallest one's height */ 56 display: grid; 57} 58 59.grow-wrap::after { 60 /* Note the weird space! Needed to preventy jumpy behavior */ 61 content: attr(data-replicated-value) " "; 62 63 /* This is how textarea text behaves */ 64 white-space: pre-wrap; 65 66 /* Hidden from view, clicks, and screen readers */ 67 visibility: hidden; 68} 69 70.grow-wrap>textarea { 71 /* You could leave this, but after a user resizes, then it ruins the auto sizing */ 72 resize: none; 73 74 /* Firefox shows scrollbar on growth, you can hide like this. */ 75 overflow: hidden; 76} 77 78.grow-wrap>textarea, 79.grow-wrap::after { 80 /* Identical styling required!! */ 81 font: inherit; 82 83 /* Place on top of each other */ 84 grid-area: 1 / 1 / 2 / 2; 85} 86 87/* Base styling */ 88@layer base { 89 body { 90 @apply bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100; 91 font-family: SpaceMono; 92 } 93 94 button { 95 @apply rounded-xl; 96 font-family: SpaceMono; 97 } 98 99 input { 100 @apply px-4 py-2; 101 } 102 103 h1, 104 h2, 105 h3, 106 h4, 107 h5 { 108 font-family: Share Tech Mono, monospace; 109 } 110} 111 112.ticket { 113 font-family: F25_Bank_Printer, monospace; 114 @apply bg-white dark:bg-gray-800 p-8 relative overflow-hidden; 115 position: relative; 116 /* Angled corners */ 117 clip-path: polygon(20px 0, 118 /* Top left corner */ 119 calc(100% - 20px) 0, 120 /* Top right corner */ 121 100% 20px, 122 /* Top right */ 123 100% calc(100% - 20px), 124 /* Bottom right */ 125 calc(100% - 20px) 100%, 126 /* Bottom right corner */ 127 20px 100%, 128 /* Bottom left corner */ 129 0 calc(100% - 20px), 130 /* Bottom left */ 131 0 20px 132 /* Back to top left */ 133 ); 134} 135 136/* Create side perforations using pseudo-elements */ 137.ticket::before, 138.ticket::after { 139 content: ""; 140 position: absolute; 141 top: 30px; 142 bottom: 30px; 143 width: 1px; 144 background-image: linear-gradient(to bottom, 145 transparent 0%, 146 transparent 40%, 147 currentColor 40%, 148 currentColor 60%, 149 transparent 60%, 150 transparent 100%); 151 background-size: 100% 20px; 152 background-repeat: repeat-y; 153 opacity: 0.2; 154} 155 156.ticket::before { 157 left: 8px; 158} 159 160.ticket::after { 161 right: 8px; 162} 163 164.dark .ticket { 165 background-image: 166 radial-gradient(circle at 10px center, 167 rgb(17 24 39) 4px, 168 transparent 4px), 169 radial-gradient(circle at calc(100% - 10px) center, 170 rgb(17 24 39) 4px, 171 transparent 4px); 172} 173 174/* Remove the previous background images and corner cuts */ 175.ticket::before, 176.ticket::after { 177 display: none; 178} 179 180.boarding-label { 181 @apply absolute top-2 right-2 bg-blue-100 dark:bg-blue-900 px-3 py-1 rounded-full text-xs font-bold uppercase tracking-wider; 182 transform: rotate(2deg); 183} 184 185.flight-info { 186 @apply flex justify-between items-center mt-4 pt-4 border-t border-dashed; 187} 188 189.passenger-info { 190 @apply text-sm text-gray-600 dark:text-gray-400 mt-2; 191} 192 193/* Modern Airport Sign Styles */ 194.airport-sign { 195 position: relative; 196 transform-origin: top; 197 transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); 198 border-radius: 0.5rem; 199 backdrop-filter: blur(8px); 200} 201 202/* Dropdown panel styles */ 203.airport-sign+div { 204 border-radius: 0.5rem; 205 backdrop-filter: blur(8px); 206} 207 208/* Remove old texture styles */ 209.airport-sign, 210.airport-sign+div { 211 background-blend-mode: overlay; 212} 213 214@keyframes popin { 215 0% { 216 opacity: 0; 217 transform: scale(0.95); 218 } 219 220 100% { 221 opacity: 1; 222 transform: scale(1); 223 } 224} 225 226.animate-popin { 227 animation: popin 0.25s cubic-bezier(0.4, 0, 0.2, 1); 228} 229 230@keyframes bounce-short { 231 232 0%, 233 100% { 234 transform: translateY(0); 235 } 236 237 50% { 238 transform: translateY(-8px); 239 } 240} 241 242.animate-bounce-short { 243 animation: bounce-short 0.5s; 244}