|
| 1 | +/* Shared visual system: paper white, sky blue, editorial type, quiet motion. */ |
| 2 | +:root { |
| 3 | + --bg: #fbfcfe; |
| 4 | + --surface: #fff; |
| 5 | + --text: #18212d; |
| 6 | + --muted: #667182; |
| 7 | + --line: #e3eaf1; |
| 8 | + --soft: #f3f7fa; |
| 9 | + --accent: #087bbd; |
| 10 | + --accent-soft: #eaf7ff; |
| 11 | + --sky: #0799e5; |
| 12 | + --radius: 13px; |
| 13 | + --cover-glow: #d8f1ff; |
| 14 | + --cover-grid: #4fa6d322; |
| 15 | + --shadow: 0 8px 32px #23496907; |
| 16 | +} |
| 17 | +html[data-theme=dark] { |
| 18 | + --bg: #101820; |
| 19 | + --surface: #16212c; |
| 20 | + --text: #edf5fc; |
| 21 | + --muted: #a4b6c6; |
| 22 | + --line: #2b3d4c; |
| 23 | + --soft: #1e2d3b; |
| 24 | + --accent: #71caff; |
| 25 | + --accent-soft: #16384d; |
| 26 | + --sky: #68c8ff; |
| 27 | + --cover-glow: #16394e; |
| 28 | + --cover-grid: #81cafa18; |
| 29 | + --shadow: 0 8px 32px #00000014; |
| 30 | +} |
| 31 | +body { background: var(--bg); } |
| 32 | +::selection { background: var(--accent-soft); color: var(--accent); } |
| 33 | +.site-header { position: relative; z-index: 5; background: var(--surface); } |
| 34 | +.header-inner { gap: 28px; } |
| 35 | +.brand strong { letter-spacing: -.5px; } |
| 36 | +.brand-project { color: var(--text); } |
| 37 | +.brand .brand-proactive { color: var(--accent); } |
| 38 | +nav { gap: clamp(16px, 1.7vw, 25px); font-size: 12px; } |
| 39 | +nav>a { color: var(--text); } |
| 40 | +nav>a:hover { color: var(--accent); } |
| 41 | +.add-paper-link { border-radius: 7px; padding: 8px 11px; } |
| 42 | +.github-link { border: 0; border-radius: 0; background: transparent; padding: 0; } |
| 43 | +.header-actions button { border-radius: 6px; } |
| 44 | +.header-actions button:hover { background: var(--soft); } |
| 45 | + |
| 46 | +/* Full-width cover sits above the shared directory shell. */ |
| 47 | +.cover { |
| 48 | + position: relative; |
| 49 | + isolation: isolate; |
| 50 | + display: grid; |
| 51 | + grid-template-columns: 1.1fr 1fr; |
| 52 | + align-items: center; |
| 53 | + column-gap: 20px; |
| 54 | + padding: 52px 40px 0; |
| 55 | + border-bottom: 1px solid var(--line); |
| 56 | +} |
| 57 | +.cover::before { |
| 58 | + content: ''; |
| 59 | + position: absolute; |
| 60 | + inset: 0 -40px; |
| 61 | + z-index: -2; |
| 62 | + background: radial-gradient(ellipse at 78% 39%, var(--cover-glow), transparent 48%), var(--surface); |
| 63 | +} |
| 64 | +.cover::after { |
| 65 | + content: ''; |
| 66 | + position: absolute; |
| 67 | + inset: 0 -40px; |
| 68 | + z-index: -1; |
| 69 | + pointer-events: none; |
| 70 | + background: radial-gradient(var(--cover-grid) 1px, transparent 1px) 0 0 / 22px 22px; |
| 71 | + mask-image: linear-gradient(90deg, transparent 35%, #000 100%); |
| 72 | +} |
| 73 | +.cover-copy { position: relative; z-index: 1; padding-bottom: 26px; } |
| 74 | +.cover-eyebrow { display: flex; align-items: center; gap: 10px; font-size: 10px; font-weight: 600; letter-spacing: 1.8px; color: var(--muted); margin-bottom: 26px; } |
| 75 | +.pixel-mark { display: inline-block; width: 7px; height: 7px; background: var(--sky); box-shadow: 7px -7px 0 var(--sky), 7px 7px 0 var(--sky), 14px 0 0 var(--sky); margin-right: 14px; flex: 0 0 7px; } |
| 76 | +.cover-prelude { font: italic 24px/1.45 Georgia, 'Times New Roman', serif; letter-spacing: -.6px; color: var(--text); margin-bottom: 12px; } |
| 77 | +.cover h1 { font-size: clamp(56px, 6.1vw, 86px); line-height: 1.05; letter-spacing: -.05em; font-weight: 750; } |
| 78 | +.cover-proactive { color: var(--sky); } |
| 79 | +.cover-description { max-width: 440px; font-size: 15px; line-height: 1.8; margin: 22px 0 12px; text-wrap: pretty; } |
| 80 | +.cover-attribution { max-width: 430px; font-size: 11px; line-height: 1.7; margin-bottom: 22px; color: var(--muted); } |
| 81 | +.cover-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 18px; } |
| 82 | +.cover-cta, .airjelly-cta { display: inline-flex; align-items: center; justify-content: center; gap: 25px; padding: 14px 20px; border-radius: 9px; font-size: 12px; font-weight: 600; background: #087fbe; color: white; box-shadow: 0 5px 15px #009be522; transition: background .2s, box-shadow .2s; } |
| 83 | +.cover-cta:hover, .airjelly-cta:hover { color: white; background: #05679e; box-shadow: 0 8px 22px #009be533; } |
| 84 | +.cover-art { position: relative; min-width: 0; width: 100%; max-width: 460px; justify-self: end; display: grid; place-items: center; aspect-ratio: 1; } |
| 85 | +.cover-illustration { display: block; width: 100%; height: auto; position: relative; z-index: 1; } |
| 86 | +.cover-orbit { position: absolute; inset: 16%; border: 1px dashed var(--cover-grid); border-radius: 50%; } |
| 87 | +.cover-pixel { position: absolute; display: block; width: 9px; height: 9px; background: var(--sky); opacity: .35; } |
| 88 | +.pixel-one { top: 6%; left: 22%; } |
| 89 | +.pixel-two { top: 37%; right: 1%; width: 6px; height: 6px; } |
| 90 | +.pixel-three { bottom: 12%; left: 8%; width: 13px; height: 13px; } |
| 91 | +.cover-art-caption { display: flex; align-items: center; gap: 7px; position: absolute; bottom: 0; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 9px; letter-spacing: 1.8px; color: var(--muted); } |
| 92 | +.cover-art-caption span { width: 5px; height: 5px; background: var(--sky); } |
| 93 | +.cover-bottom { grid-column: 1/-1; display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); margin-top: 24px; padding: 24px 0; } |
| 94 | +.cover-stats { display: flex; gap: 48px; margin: 0; } |
| 95 | +.cover-stats>div { display: flex; align-items: baseline; gap: 10px; } |
| 96 | +.cover-stats dt { order: 2; font-size: 11px; color: var(--muted); } |
| 97 | +.cover-stats dd { margin: 0; font-size: 24px; letter-spacing: -1px; font-weight: 650; font-variant-numeric: tabular-nums; } |
| 98 | +.motion-toggle { border: 0; background: transparent; color: var(--muted); font-size: 10px; display: inline-flex; align-items: center; gap: 7px; padding: 8px; } |
| 99 | +.motion-toggle:hover { color: var(--accent); background: var(--accent-soft); } |
| 100 | +.motion-icon { font-size: 12px; min-width: 12px; } |
| 101 | +.cover[data-motion=running] .cover-illustration { animation: companion-float 7s ease-in-out infinite; } |
| 102 | +.cover[data-motion=running] .cover-pixel { animation: pixel-drift 6s ease-in-out infinite alternate; } |
| 103 | +.cover[data-motion=running] .pixel-two { animation-delay: -2s; } |
| 104 | +.cover[data-motion=running] .pixel-three { animation-delay: -4s; } |
| 105 | +.cover[data-motion=paused] .cover-illustration, .cover[data-motion=paused] .cover-pixel { animation-play-state: paused; } |
| 106 | +@keyframes companion-float { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-12px) rotate(1deg); } } |
| 107 | +@keyframes pixel-drift { from { transform: translateY(0); opacity: .2; } to { transform: translateY(-10px); opacity: .6; } } |
| 108 | + |
| 109 | +/* Directory rhythm and reading typography are shared across all routes. */ |
| 110 | +#collection { scroll-margin-top: 20px; } |
| 111 | +.directory-layout { gap: 36px; } |
| 112 | +.directory-content { padding-top: 42px; padding-bottom: 64px; } |
| 113 | +.directory-sidebar { padding-top: 44px; position: sticky; top: 0; align-self: start; max-height: 100vh; overflow-y: auto; } |
| 114 | +.sidebar-group { gap: 5px; padding-bottom: 32px; } |
| 115 | +.sidebar-group>a { padding: 9px 10px; border-radius: 7px; } |
| 116 | +.sidebar-icon { color: var(--accent); } |
| 117 | +.sidebar-label { font-size: 10px; letter-spacing: 1.5px; } |
| 118 | +.collection-intro { margin-bottom: 22px; } |
| 119 | +.collection-intro .eyebrow { color: var(--accent); margin-bottom: 10px; } |
| 120 | +.collection-intro h2 { font-size: 28px; letter-spacing: -1px; } |
| 121 | +.collection-intro p { margin-top: 7px; font-size: 12px; line-height: 1.8; } |
| 122 | +.page-heading h1, .prose h1 { font-size: 36px; letter-spacing: -1.3px; } |
| 123 | +.page-heading p { font-size: 13px; } |
| 124 | +.search-form { height: 53px; border-radius: 10px; box-shadow: var(--shadow); } |
| 125 | +.search-form input { font-size: 13px; } |
| 126 | +.search-form button { border-radius: 6px; background: var(--accent-soft); color: var(--accent); padding: 10px 14px; } |
| 127 | +.quick-topics { gap: 10px; margin-top: 14px; } |
| 128 | +.quick-topics>a { border: 1px solid var(--line); border-radius: 5px; padding: 3px 8px; background: var(--surface); color: var(--muted); } |
| 129 | +.quick-topics>a:hover { color: var(--accent); border-color: var(--accent); } |
| 130 | +.directory-section { margin-top: 36px; } |
| 131 | +.section-heading { margin-bottom: 20px; } |
| 132 | +.section-heading h2 { font-size: 21px; letter-spacing: -.7px; } |
| 133 | +.section-heading>a { font-size: 11px; } |
| 134 | +.section-index { color: var(--accent); font-family: ui-monospace, monospace; font-size: 10px; } |
| 135 | +.selected-route-title { font-size: 13px; gap: 10px; } |
| 136 | +.route-symbol { padding: 5px; width: 32px; height: 32px; color: var(--accent); background: var(--accent-soft); border-radius: 8px; } |
| 137 | +.selected-card { box-shadow: var(--shadow); transition: box-shadow .2s, border-color .2s; } |
| 138 | +.selected-card:hover { border-color: var(--accent); box-shadow: 0 8px 24px #1674a50d; } |
| 139 | +.selected-body { padding: 18px; } |
| 140 | +.selected-card h3 { font-size: 15px; letter-spacing: -.3px; margin: 8px 0 6px; } |
| 141 | +.selected-description { font-size: 12px; line-height: 1.8; margin: 12px 0 16px; } |
| 142 | +.image-credit { font-size: 9px; line-height: 1.6; } |
| 143 | +.paper-meta { font-size: 10px; } |
| 144 | +.resource-link { font-size: 10px; padding: 5px 8px; } |
| 145 | +.resource-link>span { font-size: 10px; } |
| 146 | +.tags>a, .tags>span { font-size: 10px; background: var(--soft); padding: 3px 6px; } |
| 147 | +.paper-card { padding: 22px 0; } |
| 148 | +.paper-card h3 { font-size: 14px; line-height: 1.65; } |
| 149 | +.project-card { padding: 24px; box-shadow: var(--shadow); } |
| 150 | +.project-card h2 { font-size: 18px; } |
| 151 | +.project-card p { font-size: 13px; } |
| 152 | +.prose { font-size: 14px; line-height: 1.9; } |
| 153 | +.prose h2 { font-size: 22px; margin-top: 32px; } |
| 154 | +.prose h3 { font-size: 17px; } |
| 155 | +.prose th { background: var(--soft); } |
| 156 | +.prose .markdown-table { border-radius: 9px; } |
| 157 | +.collection-map { margin: 40px 0; padding: 28px; background: var(--surface); box-shadow: var(--shadow); } |
| 158 | +.collection-map-heading h2 { font-size: 23px; letter-spacing: -.7px; } |
| 159 | +.map-route { background: var(--bg); border-radius: 10px; padding: 20px; } |
| 160 | +.map-icon { color: var(--accent); } |
| 161 | +.map-route strong { font-size: 13px; } |
| 162 | +.map-detail { font-size: 11px; } |
| 163 | +.initiative-flow>.decision-node { border-color: var(--line); background: var(--accent-soft); } |
| 164 | +footer { font-size: 11px; padding: 28px 0; width: calc(100% - 80px); } |
| 165 | + |
| 166 | +/* One product invitation, with an abstract context-to-action illustration. */ |
| 167 | +.airjelly-feature { display: grid; grid-template-columns: 1.2fr 1fr; align-items: center; gap: 28px; position: relative; overflow: hidden; margin: 0 0 44px; padding: 40px; border: 1px solid var(--line); border-radius: 16px; background: radial-gradient(ellipse at 100% 75%, var(--cover-glow), transparent 65%), var(--surface); } |
| 168 | +.airjelly-eyebrow { display: flex; align-items: center; gap: 5px; font-weight: 600; font-size: 10px; color: var(--muted); letter-spacing: 1.5px; margin-bottom: 22px; } |
| 169 | +.airjelly-prelude { font: italic 16px/1.5 Georgia, 'Times New Roman', serif; color: var(--text); margin-bottom: 8px; } |
| 170 | +.airjelly-copy h2 { font-size: clamp(22px, 2.3vw, 31px); line-height: 1.25; letter-spacing: -1px; } |
| 171 | +.airjelly-copy>p:not(.airjelly-prelude) { font-size: 12px; line-height: 1.8; margin: 16px 0 22px; max-width: 430px; } |
| 172 | +.airjelly-cta { padding: 12px 17px; font-size: 11px; } |
| 173 | +.airjelly-visual { min-width: 0; position: relative; padding: 20px 0; } |
| 174 | +.airjelly-window-label, .airjelly-visual-caption { display: block; text-align: center; font-size: 9px; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; letter-spacing: 1.5px; color: var(--muted); } |
| 175 | +.context-stack { position: relative; height: 200px; max-width: 260px; margin: 25px auto; } |
| 176 | +.context-card { position: absolute; width: 80%; padding: 20px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface); box-shadow: 0 12px 25px #126b9a0d; font-size: 11px; font-weight: 600; color: var(--text); } |
| 177 | +.context-card:first-child { top: 0; left: 0; transform: rotate(-8deg); } |
| 178 | +.context-card:last-child { bottom: 0; right: 0; transform: rotate(5deg); } |
| 179 | +.context-glyph { display: inline-grid; place-items: center; width: 22px; height: 22px; color: var(--accent); background: var(--accent-soft); border-radius: 5px; margin-right: 6px; font-size: 17px; } |
| 180 | +.context-card i { display: block; height: 5px; background: var(--soft); border-radius: 2px; margin-top: 14px; } |
| 181 | +.context-card i+i { margin-top: 7px; width: 65%; } |
| 182 | +.context-check { position: absolute; right: 16px; bottom: 16px; width: 22px; height: 22px; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); border-radius: 50%; } |
| 183 | + |
| 184 | +@media (max-width: 1250px) { |
| 185 | + .cover { padding: 55px 20px 0; } |
| 186 | + .cover::before, .cover::after { left: -28px; right: -28px; } |
| 187 | + footer { width: auto; } |
| 188 | + .directory-layout { gap: 28px; } |
| 189 | + .selected-body { padding: 15px; } |
| 190 | + .selected-card h3 { font-size: 14px; } |
| 191 | + .airjelly-feature { padding: 30px; } |
| 192 | +} |
| 193 | +@media (max-width: 1000px) { |
| 194 | + .cover { column-gap: 0; padding: 45px 10px 0; } |
| 195 | + .cover h1 { font-size: 64px; } |
| 196 | + .cover-prelude { font-size: 20px; } |
| 197 | + .cover-description { font-size: 13px; } |
| 198 | + .cover-eyebrow { font-size: 8px; } |
| 199 | + .cover-stats { gap: 25px; } |
| 200 | + .cover-stats>div { gap: 7px; } |
| 201 | + .cover-stats dt { font-size: 10px; } |
| 202 | + .cover-stats dd { font-size: 22px; } |
| 203 | + .cover-bottom { margin-top: 20px; } |
| 204 | + .directory-layout { gap: 25px; } |
| 205 | + .selected-route-grid { gap: 28px; } |
| 206 | + .airjelly-feature { grid-template-columns: 1fr; } |
| 207 | + .airjelly-visual { display: none; } |
| 208 | + .airjelly-copy>p:not(.airjelly-prelude) { max-width: 480px; } |
| 209 | +} |
| 210 | +@media (max-width: 760px) { |
| 211 | + .header-inner { gap: 12px; } |
| 212 | + nav { gap: 6px 12px; } |
| 213 | + nav .github-link { padding: 0; border: 0; } |
| 214 | + .cover { grid-template-columns: 1fr; padding: 38px 4px 0; text-align: center; } |
| 215 | + .cover::before, .cover::after { left: -20px; right: -20px; } |
| 216 | + .cover::after { mask-image: linear-gradient(transparent, #000); } |
| 217 | + .cover-copy { padding: 0; } |
| 218 | + .cover-eyebrow { justify-content: center; font-size: 8px; letter-spacing: .65px; margin-bottom: 21px; } |
| 219 | + .cover-prelude { font-size: 20px; letter-spacing: -.3px; } |
| 220 | + .cover h1 { font-size: clamp(50px, 10.5vw, 72px); letter-spacing: -.06em; } |
| 221 | + .cover-description { max-width: 380px; margin: 20px auto 12px; font-size: 13px; } |
| 222 | + .cover-attribution { max-width: 320px; margin: 0 auto 22px; font-size: 10px; } |
| 223 | + .cover-actions { justify-content: center; } |
| 224 | + .cover-cta { padding: 12px 18px; } |
| 225 | + .cover-art { width: min(65%, 300px); justify-self: center; margin: 10px 0; } |
| 226 | + .cover-art-caption { font-size: 7px; letter-spacing: 1.2px; bottom: -6px; } |
| 227 | + .cover-bottom { margin-top: 24px; padding: 20px 0; flex-wrap: wrap; justify-content: center; gap: 14px; } |
| 228 | + .cover-stats { width: 100%; justify-content: center; gap: 36px; } |
| 229 | + .cover-stats>div { flex-direction: column; align-items: center; gap: 2px; } |
| 230 | + .cover-stats dt { font-size: 9px; } |
| 231 | + .cover-stats dd { font-size: 23px; } |
| 232 | + .motion-toggle { font-size: 9px; padding: 4px 8px; } |
| 233 | + .directory-sidebar { padding: 16px 0; position: static; max-height: none; } |
| 234 | + .directory-sidebar .sidebar-group>a { padding: 8px 7px; font-size: 10px; } |
| 235 | + .directory-content { padding-top: 28px; padding-bottom: 36px; } |
| 236 | + .collection-intro h2 { font-size: 26px; } |
| 237 | + .collection-intro p { font-size: 12px; } |
| 238 | + .page-heading h1, .prose h1 { font-size: 30px; } |
| 239 | + .page-heading p { font-size: 12px; } |
| 240 | + .section-heading h2 { font-size: 20px; } |
| 241 | + .section-heading>a { font-size: 10px; } |
| 242 | + .selected-body { padding: 18px; } |
| 243 | + .selected-card h3 { font-size: 15px; } |
| 244 | + .collection-map { padding: 22px; margin: 30px 0; } |
| 245 | + .airjelly-feature { margin: 30px 0; padding: 28px; } |
| 246 | + .airjelly-copy h2 { font-size: 28px; } |
| 247 | + .airjelly-prelude { font-size: 15px; } |
| 248 | + .airjelly-eyebrow { margin-bottom: 18px; } |
| 249 | +} |
| 250 | +@media (max-width: 450px) { |
| 251 | + .cover::before, .cover::after { left: -16px; right: -16px; } |
| 252 | + .cover h1 { font-size: clamp(40px, 13.3vw, 52px); } |
| 253 | + .cover-description { max-width: 305px; } |
| 254 | + .cover-art { width: 72%; } |
| 255 | + .cover-stats { gap: 25px; } |
| 256 | + .quick-topics { gap: 6px; } |
| 257 | + .quick-topics>a { font-size: 9px; padding: 3px 6px; } |
| 258 | + .search-form input { font-size: 12px; } |
| 259 | + .selected-card h3 { min-height: 0; } |
| 260 | + .airjelly-feature { padding: 24px; } |
| 261 | + .airjelly-copy h2 { font-size: 25px; } |
| 262 | +} |
| 263 | +@media (prefers-reduced-motion: reduce) { |
| 264 | + html { scroll-behavior: auto; } |
| 265 | + *, *::before, *::after { animation: none !important; transition: none !important; } |
| 266 | + .motion-toggle { display: none; } |
| 267 | +} |
0 commit comments