Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at ui-refactor 509 lines 8.8 kB view raw
1.app { 2 min-height: 100vh; 3 background: var(--bg-primary); 4} 5 6.top-nav { 7 position: sticky; 8 top: 0; 9 z-index: 100; 10 background: var(--nav-bg); 11 backdrop-filter: blur(12px); 12 -webkit-backdrop-filter: blur(12px); 13 border-bottom: 1px solid var(--border); 14} 15 16.top-nav-inner { 17 max-width: 1200px; 18 margin: 0 auto; 19 padding: 0 32px; 20 height: 56px; 21 display: flex; 22 align-items: center; 23 gap: 32px; 24} 25 26.top-nav-logo { 27 display: flex; 28 align-items: center; 29 gap: 10px; 30 text-decoration: none; 31 color: var(--text-primary); 32 font-weight: 700; 33 font-size: 1.1rem; 34 flex-shrink: 0; 35} 36 37.top-nav-logo img { 38 width: 26px; 39 height: 26px; 40} 41 42.top-nav-links { 43 display: flex; 44 align-items: center; 45 gap: 4px; 46 flex: 1; 47} 48 49.top-nav-link { 50 padding: 8px 14px; 51 color: var(--text-secondary); 52 text-decoration: none; 53 font-size: 0.9rem; 54 font-weight: 500; 55 border-radius: var(--radius-md); 56 transition: all 0.15s; 57} 58 59.top-nav-link:hover { 60 color: var(--text-primary); 61 background: var(--bg-hover); 62} 63 64.top-nav-link.active { 65 color: var(--text-primary); 66 background: var(--bg-tertiary); 67} 68 69.top-nav-link.extension-link { 70 display: flex; 71 align-items: center; 72 gap: 6px; 73} 74 75.top-nav-actions { 76 display: flex; 77 align-items: center; 78 gap: 8px; 79} 80 81.top-nav-icon-btn { 82 display: flex; 83 align-items: center; 84 justify-content: center; 85 width: 36px; 86 height: 36px; 87 border-radius: var(--radius-md); 88 background: transparent; 89 border: none; 90 color: var(--text-secondary); 91 cursor: pointer; 92 transition: all 0.15s; 93 position: relative; 94 text-decoration: none; 95} 96 97.top-nav-icon-btn:hover { 98 background: var(--bg-hover); 99 color: var(--text-primary); 100} 101 102.notif-dot { 103 position: absolute; 104 top: 6px; 105 right: 6px; 106 width: 8px; 107 height: 8px; 108 background: var(--accent); 109 border-radius: 50%; 110 border: 2px solid var(--bg-primary); 111} 112 113.top-nav-new-btn { 114 display: flex; 115 align-items: center; 116 gap: 6px; 117 padding: 8px 16px; 118 background: var(--accent); 119 color: var(--bg-primary); 120 border-radius: var(--radius-md); 121 font-size: 0.875rem; 122 font-weight: 600; 123 text-decoration: none; 124 transition: all 0.15s; 125} 126 127.top-nav-new-btn:hover { 128 background: var(--accent-hover); 129} 130 131.top-nav-avatar { 132 width: 34px; 133 height: 34px; 134 border-radius: var(--radius-md); 135 background: var(--bg-tertiary); 136 border: none; 137 cursor: pointer; 138 overflow: hidden; 139 display: flex; 140 align-items: center; 141 justify-content: center; 142 color: var(--text-secondary); 143 font-size: 0.8rem; 144 font-weight: 600; 145 transition: opacity 0.15s; 146} 147 148.top-nav-avatar:hover { 149 opacity: 0.85; 150} 151 152.top-nav-avatar img { 153 width: 100%; 154 height: 100%; 155 object-fit: cover; 156} 157 158.top-nav-mobile-toggle { 159 display: none; 160 align-items: center; 161 justify-content: center; 162 width: 40px; 163 height: 40px; 164 border: none; 165 background: transparent; 166 color: var(--text-primary); 167 cursor: pointer; 168} 169 170.top-nav-dropdown { 171 position: relative; 172} 173 174.dropdown-menu { 175 position: absolute; 176 top: calc(100% + 8px); 177 min-width: 200px; 178 background: var(--bg-elevated); 179 border: 1px solid var(--border); 180 border-radius: var(--radius-lg); 181 padding: 6px; 182 box-shadow: var(--shadow-lg); 183 z-index: 200; 184} 185 186.dropdown-right { 187 right: 0; 188} 189 190.dropdown-item { 191 display: flex; 192 align-items: center; 193 gap: 10px; 194 width: 100%; 195 padding: 10px 12px; 196 border-radius: var(--radius-md); 197 color: var(--text-secondary); 198 font-size: 0.875rem; 199 font-weight: 500; 200 text-decoration: none; 201 transition: all 0.15s; 202 background: none; 203 border: none; 204 cursor: pointer; 205 text-align: left; 206} 207 208.dropdown-item:hover { 209 background: var(--bg-hover); 210 color: var(--text-primary); 211} 212 213.dropdown-item.danger:hover { 214 background: rgba(217, 119, 102, 0.12); 215 color: var(--error); 216} 217 218.dropdown-external { 219 margin-left: auto; 220 opacity: 0.4; 221} 222 223.tangled-icon-wrapper { 224 width: 16px; 225 height: 16px; 226 display: flex; 227 align-items: center; 228 justify-content: center; 229} 230 231.tangled-icon-wrapper img { 232 width: 16px; 233 height: 16px; 234 filter: grayscale(100%) brightness(1.5); 235 opacity: 0.6; 236 transition: all 0.15s; 237} 238 239.dropdown-item:hover .tangled-icon-wrapper img { 240 opacity: 0.9; 241} 242 243[data-theme="light"] .tangled-icon-wrapper img { 244 filter: grayscale(100%) brightness(0) invert(0.35); 245 opacity: 1; 246} 247 248[data-theme="light"] .dropdown-item:hover .tangled-icon-wrapper img { 249 filter: grayscale(100%) brightness(0) invert(0.1); 250 opacity: 1; 251} 252 253.dropdown-divider { 254 height: 1px; 255 background: var(--border); 256 margin: 6px 0; 257} 258 259.dropdown-user-info { 260 padding: 8px 12px; 261 display: flex; 262 flex-direction: column; 263 gap: 2px; 264} 265 266.dropdown-user-name { 267 font-weight: 600; 268 color: var(--text-primary); 269 font-size: 0.9rem; 270} 271 272.dropdown-user-handle { 273 color: var(--text-tertiary); 274 font-size: 0.8rem; 275} 276 277.main-content { 278 max-width: 1300px; 279 margin: 0 auto; 280 padding: 32px 56px 80px; 281} 282 283.mobile-menu { 284 display: none; 285 position: absolute; 286 top: 100%; 287 left: 0; 288 right: 0; 289 background: var(--bg-secondary); 290 border-bottom: 1px solid var(--border); 291 padding: 12px 16px; 292} 293 294.mobile-menu-link { 295 display: flex; 296 align-items: center; 297 gap: 12px; 298 padding: 12px 16px; 299 color: var(--text-secondary); 300 text-decoration: none; 301 font-size: 0.95rem; 302 font-weight: 500; 303 border-radius: var(--radius-md); 304 transition: all 0.15s; 305} 306 307.mobile-menu-link:hover, 308.mobile-menu-link.active { 309 background: var(--bg-hover); 310 color: var(--text-primary); 311} 312 313.mobile-menu-link.active { 314 color: var(--accent); 315} 316 317.mobile-menu-divider { 318 height: 1px; 319 background: var(--border); 320 margin: 8px 0; 321} 322 323.notification-badge { 324 background: var(--accent); 325 color: var(--bg-primary); 326 font-size: 0.7rem; 327 font-weight: 700; 328 padding: 2px 6px; 329 border-radius: var(--radius-full); 330 margin-left: auto; 331} 332 333.mobile-bottom-nav { 334 display: none; 335 position: fixed; 336 bottom: 0; 337 left: 0; 338 right: 0; 339 background: var(--nav-bg); 340 backdrop-filter: blur(12px); 341 -webkit-backdrop-filter: blur(12px); 342 border-top: 1px solid var(--border); 343 padding: 8px 8px calc(8px + env(safe-area-inset-bottom)); 344 z-index: 100; 345} 346 347.mobile-bottom-nav { 348 display: none; 349 justify-content: space-around; 350 align-items: center; 351} 352 353.mobile-bottom-nav-item { 354 display: flex; 355 flex-direction: column; 356 align-items: center; 357 gap: 4px; 358 padding: 6px 12px; 359 color: var(--text-tertiary); 360 text-decoration: none; 361 font-size: 0.65rem; 362 font-weight: 500; 363 transition: color 0.15s; 364 min-width: 56px; 365} 366 367.mobile-bottom-nav-item.active { 368 color: var(--accent); 369} 370 371.mobile-bottom-nav-item:active { 372 transform: scale(0.95); 373} 374 375.mobile-bottom-nav-new { 376 padding: 6px 16px; 377} 378 379.mobile-nav-new-btn { 380 display: flex; 381 align-items: center; 382 justify-content: center; 383 width: 44px; 384 height: 44px; 385 background: var(--accent); 386 color: var(--bg-primary); 387 border-radius: var(--radius-full); 388 box-shadow: var(--shadow-md); 389} 390 391.mobile-nav-avatar { 392 width: 24px; 393 height: 24px; 394 border-radius: var(--radius-full); 395 object-fit: cover; 396} 397 398.ios-shortcut-banner { 399 display: none; 400 position: relative; 401 padding: 20px; 402 margin-bottom: 12px; 403 text-align: center; 404} 405 406.ios-shortcut-banner-close { 407 position: absolute; 408 top: 8px; 409 right: 8px; 410 background: none; 411 border: none; 412 color: var(--text-tertiary); 413 cursor: pointer; 414 padding: 6px; 415 display: flex; 416 align-items: center; 417 justify-content: center; 418 opacity: 0.5; 419 transition: opacity 0.15s; 420} 421 422.ios-shortcut-banner-close:hover { 423 opacity: 1; 424} 425 426.ios-shortcut-banner-content { 427 display: flex; 428 flex-direction: column; 429 align-items: center; 430 gap: 12px; 431} 432 433.ios-shortcut-banner-icon { 434 display: none; 435} 436 437.ios-shortcut-banner-text { 438 text-align: center; 439} 440 441.ios-shortcut-banner-text strong { 442 display: none; 443} 444 445.ios-shortcut-banner-text p { 446 font-size: 0.8rem; 447 color: var(--text-tertiary); 448 margin: 0; 449 line-height: 1.4; 450} 451 452.ios-shortcut-banner-btn { 453 display: inline-flex; 454 align-items: center; 455 gap: 6px; 456 padding: 10px 20px; 457 background: transparent; 458 color: var(--text-secondary); 459 font-size: 0.85rem; 460 font-weight: 500; 461 border: 1px solid var(--border); 462 border-radius: 100px; 463 text-decoration: none; 464 transition: all 0.15s; 465} 466 467.ios-shortcut-banner-btn:hover { 468 background: var(--bg-hover); 469 color: var(--text-primary); 470} 471 472@media (max-width: 768px) { 473 .ios-shortcut-banner { 474 display: block; 475 } 476} 477 478@media (max-width: 768px) { 479 .top-nav { 480 display: none; 481 } 482 483 .mobile-bottom-nav { 484 display: flex; 485 } 486 487 .main-content { 488 padding: 16px 12px 100px; 489 } 490 491 .feed-container { 492 border-radius: var(--radius-md); 493 padding: 4px; 494 } 495} 496 497@media (max-width: 480px) { 498 .main-content { 499 padding: 16px 12px 100px; 500 } 501 502 .page-title { 503 font-size: 1.25rem; 504 } 505 506 .page-description { 507 font-size: 0.85rem; 508 } 509}