I get told to shut up a lot by my friend. This is the microsite that documents this in detail. shutup.jp
postcards microsite
at main 264 lines 5.2 kB view raw
1:root { 2 --text-color: #222; 3 --mute-color: #777; 4 --back-color: #f7f7f7; 5 --bg: url('bg-light.png'); 6 7 @media (prefers-color-scheme: dark) { 8 --text-color: #ddd; 9 --mute-color: #777; 10 --back-color: #222; 11 --bg: url('bg-dark.png'); 12 13 .postcard .shadow { 14 background: rgb(0, 0, 0, 0.4) !important; 15 box-shadow: 0px 0px 45px 45px rgb(0, 0, 0, 0.4); 16 } 17 } 18} 19 20a { 21 color: var(--mute-color); 22} 23 24a:hover { 25 color: var(--text-color); 26} 27 28html { 29 margin: 0; 30 padding: 0; 31 font-family: Verdana, Geneva, Tahoma, sans-serif; 32 width: 100%; 33 max-width: 100%; 34 scroll-snap-type: y mandatory; 35 scroll-padding: 0; 36 overflow-x: hidden; 37 /* -webkit-overflow-scrolling: touch; */ 38} 39 40body { 41 margin: 0; 42 padding: 0; 43 width: 100%; 44 max-width: 100%; 45 background-color: var(--back-color); 46 color: var(--text-color); 47 background-image: var(--bg); 48 background-repeat: repeat; 49 background-attachment: fixed; 50 overflow-x: hidden; 51 /* -webkit-overflow-scrolling: touch; */ 52} 53 54h1 { 55 font-size: 2.5rem; 56 text-align: center; 57 margin: 2rem; 58 padding: 0; 59} 60section, figure { 61 height: calc(100vh - 2em); 62 padding: 1em; 63 margin: 0; 64 display: flex; 65 align-items: center; 66 justify-content: center; 67 scroll-snap-align: start; 68 flex-direction: row; 69} 70 71figcaption { 72 min-width: 25vw; 73 position: relative; 74 text-align: right; 75 margin: 1em; 76 position: relative; 77 height: 50vh; 78 text-wrap: balance; 79} 80 81figcaption > * { 82 width: 100%; 83 transition: opacity 500ms ease-in-out 0ms; 84 position: absolute; 85 right: 0; 86 top: 50%; 87 transform: translateY(-50%); 88} 89 90figcaption .title { 91 transition-delay: 500ms; 92 font-size: 1.5em; 93 font-weight: bold; 94} 95 96.title time { 97 font-style: italic; 98 font-size: 0.65em; 99 font-weight: normal; 100} 101 102.title * { 103 display: block; 104 margin-bottom: 0.5em; 105} 106 107figcaption .transcription { 108 opacity: 0; 109 white-space: pre; 110 text-wrap: balance; 111 font-size: 1.2em; 112} 113 114@media (orientation: portrait) { 115 figure { 116 flex-direction: column; 117 } 118 119 figcaption { 120 min-height: 25vh; 121 text-align: center; 122 width: 50vw; 123 margin: 2em 0; 124 } 125 126 figcaption > * { 127 top: 0; 128 transform: none; 129 } 130} 131 132section.explain { 133 display: grid; 134 place-content: center; 135 padding-inline: calc(max((100vw - 500px)/2, 2em)); 136} 137 138p { 139 text-align:justify; 140} 141cite { 142 text-align: right; 143} 144cite::before { 145 content: '–'; 146 margin-right: 0.25em; 147} 148 149.postcard { 150 max-width: 90vw; 151 max-height: 75vh; 152 aspect-ratio:1/1; 153 --flip: 0deg; 154 margin-inline: auto; 155} 156 157label { 158 display:block; 159 width: 100%; 160 cursor: pointer; 161} 162 163input { 164 display: inline; 165 width: 0; 166 height: 0; 167 overflow:hidden; 168 visibility: hidden; 169} 170 171input:checked ~ label .postcard { 172 --flip: 180deg; 173} 174 175input:checked ~ figcaption .transcription { 176 opacity: 1; 177 transition-delay: 500ms; 178} 179 180input:checked ~ figcaption .title { 181 opacity: 0; 182 transition-delay: 0s; 183} 184 185.postcard::before,.postcard::after,.postcard .shadow { 186 transition: transform 1s ease-in-out; 187} 188 189#worldmap { 190 width: 85%; 191 --collected: rgb(24, 227, 85); 192 193 g { 194 path { 195 stroke: #777; 196 stroke-width: 1px; 197 fill: currentColor; 198 fill-opacity: 10%; 199 200 } 201 202 &:hover path { 203 fill-opacity: 50%; 204 } 205 206 &.collected { 207 path { 208 fill: var(--collected); 209 fill-opacity: 40%; 210 filter: drop-shadow(0px 0px 10px var(--collected)); 211 } 212 213 &:hover path { 214 fill-opacity: 100%; 215 } 216 } 217 } 218 219 circle { 220 fill: #777; 221 } 222} 223 224[lang]::after { margin-left: 0.5em } 225[lang="ar-AE"]::after { content: '🇦🇪' } 226[lang="ar-MA"]::after { content: '🇲🇦' } 227[lang="cy-GB"]::after { content: '🏴󠁧󠁢󠁷󠁬󠁳󠁿' } 228[lang="de-DE"]::after { content: '🇩🇪' } 229[lang="el-GR"]::after { content: '🇬🇷' } 230[lang="en-CA"]::after { content: '🇨🇦' } 231[lang="en-GB"]::after { content: '🇬🇧' } 232[lang="en-SG"]::after { content: '🇸🇬/🇬🇧' } 233[lang="en-US"]::after { content: '🇺🇸' } 234[lang="es-ES"]::after { content: '🇪🇸' } 235[lang="es-GT"]::after { content: '🇬🇹' } 236[lang="fr-FR"]::after { content: '🇫🇷' } 237[lang="fr-IM"]::after { content: '🇮🇲/🇫🇷' } 238[lang="gd-GB"]::after { content: '🏴󠁧󠁢󠁳󠁣󠁴󠁿' } 239[lang="gv-IM"]::after { content: '🇮🇲' } 240[lang="hr-HR"]::after { content: '🇭🇷' } 241[lang="id-MY"]::after { content: '🇲🇾' } 242[lang="is-IS"]::after { content: '🇮🇸' } 243[lang="it-IT"]::after { content: '🇮🇹' } 244[lang="ja-JA"]::after { content: '🇯🇵' } 245[lang="ka-GE"]::after { content: '🇬🇪' } 246[lang="km-KH"]::after { content: '🇰🇭' } 247[lang="ko-KR"]::after { content: '🇰🇷' } 248[lang="mi-NZ"]::after { content: '🇳🇿' } 249[lang="ms-SG"]::after { content: '🇸🇬/🇲🇾' } 250[lang="pt-PT"]::after { content: '🇵🇹' } 251[lang="se-SE"]::after { content: '🇸🇪' } 252[lang="ta-LK"]::after { content: '🇱🇰' } 253[lang="ta-SG"]::after { content: '🇸🇬/🇮🇳' } 254[lang="th-TH"]::after { content: '🇹🇭' } 255[lang="vi-VN"]::after { content: '🇻🇳' } 256[lang="zh-CN"]::after { content: '🇨🇳' } 257[lang="zh-SG"]::after { content: '🇸🇬/🇨🇳' } 258[lang="zh-TW"]::after { content: '🇹🇼' } 259 260a,span { 261 img[src$=".svg"] { 262 height: 1em; 263 } 264}