atproto utils for zig zat.dev
atproto sdk zig
at main 5.9 kB view raw
1:root { 2 color-scheme: light dark; 3 --bg: #0b0b0f; 4 --panel: #10101a; 5 --text: #f3f4f6; 6 --muted: #a1a1aa; 7 --border: rgba(255, 255, 255, 0.08); 8 --link: #93c5fd; 9 --codebg: rgba(255, 255, 255, 0.06); 10 --shadow: rgba(0, 0, 0, 0.35); 11 --max: 900px; 12 --radius: 12px; 13 --gutter: 16px; 14 --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", 15 "Courier New", monospace; 16 --sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, 17 Arial, "Apple Color Emoji", "Segoe UI Emoji"; 18} 19 20@media (prefers-color-scheme: light) { 21 :root { 22 --bg: #fafafa; 23 --panel: #ffffff; 24 --text: #0b0b0f; 25 --muted: #52525b; 26 --border: rgba(0, 0, 0, 0.08); 27 --link: #2563eb; 28 --codebg: rgba(0, 0, 0, 0.04); 29 --shadow: rgba(0, 0, 0, 0.08); 30 } 31} 32 33* { 34 box-sizing: border-box; 35} 36 37html, 38body { 39 height: 100%; 40} 41 42body { 43 margin: 0; 44 font-family: var(--sans); 45 background: var(--bg); 46 color: var(--text); 47} 48 49a { 50 color: var(--link); 51 text-decoration: none; 52} 53a:hover { 54 text-decoration: underline; 55} 56 57/* App shell */ 58.app { 59 min-height: 100%; 60 display: flex; 61 flex-direction: column; 62} 63 64/* Header */ 65.header { 66 position: sticky; 67 top: 0; 68 z-index: 20; 69 display: flex; 70 align-items: center; 71 gap: 12px; 72 padding: 12px var(--gutter); 73 border-bottom: 1px solid var(--border); 74 background: color-mix(in srgb, var(--panel) 92%, transparent); 75 backdrop-filter: blur(10px); 76} 77 78.menu-toggle { 79 display: none; 80 align-items: center; 81 justify-content: center; 82 width: 36px; 83 height: 36px; 84 padding: 0; 85 background: transparent; 86 border: 1px solid var(--border); 87 border-radius: 8px; 88 cursor: pointer; 89 flex-shrink: 0; 90} 91.menu-toggle span { 92 display: block; 93 width: 16px; 94 height: 2px; 95 background: var(--text); 96 border-radius: 1px; 97 position: relative; 98} 99.menu-toggle span::before, 100.menu-toggle span::after { 101 content: ""; 102 position: absolute; 103 left: 0; 104 width: 16px; 105 height: 2px; 106 background: var(--text); 107 border-radius: 1px; 108 transition: transform 0.2s; 109} 110.menu-toggle span::before { 111 top: -5px; 112} 113.menu-toggle span::after { 114 top: 5px; 115} 116.menu-toggle[aria-expanded="true"] span { 117 background: transparent; 118} 119.menu-toggle[aria-expanded="true"] span::before { 120 transform: translateY(5px) rotate(45deg); 121} 122.menu-toggle[aria-expanded="true"] span::after { 123 transform: translateY(-5px) rotate(-45deg); 124} 125 126.brand { 127 font-weight: 700; 128 font-size: 15px; 129 color: var(--text); 130 padding: 6px 0; 131} 132.brand:hover { 133 text-decoration: none; 134 opacity: 0.8; 135} 136 137.header-links { 138 display: flex; 139 gap: 8px; 140 margin-left: auto; 141} 142 143.header-link { 144 padding: 6px 12px; 145 font-size: 14px; 146 border-radius: 8px; 147 border: 1px solid var(--border); 148 color: var(--text); 149} 150.header-link:hover { 151 background: var(--codebg); 152 text-decoration: none; 153} 154 155/* Overlay */ 156.overlay { 157 display: none; 158 position: fixed; 159 inset: 0; 160 z-index: 15; 161 background: rgba(0, 0, 0, 0.5); 162} 163.overlay.open { 164 display: block; 165} 166 167/* Layout */ 168.layout { 169 display: flex; 170 gap: var(--gutter); 171 padding: var(--gutter); 172 flex: 1; 173 max-width: 1200px; 174 margin: 0 auto; 175 width: 100%; 176} 177 178/* Sidebar */ 179.sidebar { 180 width: 240px; 181 flex-shrink: 0; 182 position: sticky; 183 top: 72px; 184 align-self: flex-start; 185 max-height: calc(100vh - 88px); 186 overflow-y: auto; 187 border: 1px solid var(--border); 188 border-radius: var(--radius); 189 background: var(--panel); 190} 191 192.nav { 193 padding: 8px; 194 display: flex; 195 flex-direction: column; 196 gap: 2px; 197} 198 199.nav a { 200 display: block; 201 padding: 10px 12px; 202 border-radius: 8px; 203 color: var(--text); 204 font-size: 14px; 205} 206.nav a:hover { 207 background: var(--codebg); 208 text-decoration: none; 209} 210.nav a[aria-current="page"] { 211 background: color-mix(in srgb, var(--link) 15%, transparent); 212} 213 214/* Main content */ 215.main { 216 flex: 1; 217 min-width: 0; 218} 219 220.content { 221 border: 1px solid var(--border); 222 border-radius: var(--radius); 223 background: var(--panel); 224 padding: 24px; 225} 226 227/* Footer */ 228.site-footer { 229 padding: 16px var(--gutter); 230 text-align: center; 231 border-top: 1px solid var(--border); 232} 233 234.footer-link { 235 font-size: 13px; 236 color: var(--muted); 237} 238.footer-link:hover { 239 color: var(--text); 240 text-decoration: none; 241} 242 243/* Content typography */ 244.content h1, 245.content h2, 246.content h3 { 247 scroll-margin-top: 80px; 248} 249 250.content h1 { 251 margin-top: 0; 252 font-size: 28px; 253} 254 255.content h2 { 256 font-size: 20px; 257 margin-top: 32px; 258} 259 260.content h3 { 261 font-size: 16px; 262 margin-top: 24px; 263} 264 265.content p, 266.content li { 267 line-height: 1.65; 268} 269 270.content code { 271 font-family: var(--mono); 272 font-size: 0.9em; 273 background: var(--codebg); 274 padding: 2px 6px; 275 border-radius: 6px; 276} 277 278.content pre { 279 overflow-x: auto; 280 padding: 16px; 281 border-radius: 10px; 282 background: var(--codebg); 283 border: 1px solid var(--border); 284 font-size: 14px; 285 line-height: 1.5; 286} 287 288.content pre code { 289 background: transparent; 290 padding: 0; 291} 292 293.content details { 294 margin: 16px 0; 295} 296 297.content details summary { 298 cursor: pointer; 299 padding: 8px 0; 300} 301 302.empty { 303 color: var(--muted); 304} 305 306/* Mobile */ 307@media (max-width: 768px) { 308 :root { 309 --gutter: 16px; 310 } 311 312 .menu-toggle { 313 display: flex; 314 } 315 316 .layout { 317 flex-direction: column; 318 } 319 320 .sidebar { 321 position: fixed; 322 top: 0; 323 left: 0; 324 bottom: 0; 325 width: 280px; 326 max-width: 80vw; 327 z-index: 16; 328 border: none; 329 border-radius: 0; 330 border-right: 1px solid var(--border); 331 max-height: none; 332 padding-top: 60px; 333 transform: translateX(-100%); 334 transition: transform 0.2s ease-out; 335 } 336 337 .sidebar.open { 338 transform: translateX(0); 339 } 340 341 .nav { 342 padding: 12px; 343 } 344 345 .nav a { 346 padding: 12px 14px; 347 font-size: 15px; 348 } 349 350 .content { 351 padding: 20px; 352 border-radius: 10px; 353 } 354 355 .content h1 { 356 font-size: 24px; 357 } 358 359 .content h2 { 360 font-size: 18px; 361 } 362 363 .content pre { 364 font-size: 13px; 365 padding: 14px; 366 } 367}