Write on the margins of the internet. Powered by the AT Protocol. margin.at
extension web atproto comments
at ui-refactor 378 lines 6.8 kB view raw
1.login-page { 2 display: flex; 3 flex-direction: column; 4 align-items: center; 5 justify-content: center; 6 min-height: 80vh; 7 padding: 40px 20px; 8 width: 100%; 9} 10 11.login-header-group { 12 display: flex; 13 flex-direction: row; 14 align-items: center; 15 justify-content: center; 16 gap: 24px; 17 margin-bottom: 48px; 18 width: auto; 19} 20 21.login-logo-img { 22 width: 60px; 23 height: 60px; 24 object-fit: contain; 25 display: block; 26} 27 28.login-x { 29 font-size: 2rem; 30 color: var(--text-tertiary); 31 font-weight: 300; 32 line-height: 1; 33 padding-bottom: 4px; 34} 35 36.login-atproto-icon { 37 color: #3b83f6 !important; 38 display: flex; 39 align-items: center; 40 justify-content: center; 41} 42 43.login-heading { 44 font-size: 1.5rem; 45 font-weight: 700; 46 margin-bottom: 32px; 47 display: flex; 48 align-items: center; 49 justify-content: center; 50 flex-wrap: wrap; 51 gap: 8px; 52 text-align: center; 53 line-height: 1.3; 54 color: var(--text-primary); 55} 56 57.login-help-btn { 58 background: none; 59 border: none; 60 color: var(--text-tertiary); 61 cursor: pointer; 62 padding: 4px; 63 display: flex; 64 align-items: center; 65 transition: color 0.15s; 66 flex-shrink: 0; 67} 68 69.login-help-btn:hover { 70 color: var(--accent); 71} 72 73.login-help-text { 74 background: var(--bg-tertiary); 75 border: 1px solid var(--border); 76 border-radius: var(--radius-md); 77 padding: 16px; 78 margin-bottom: 24px; 79 font-size: 0.9rem; 80 color: var(--text-secondary); 81 line-height: 1.5; 82 text-align: center; 83 width: 100%; 84} 85 86.login-help-text code { 87 background: rgba(255, 255, 255, 0.05); 88 padding: 2px 6px; 89 border-radius: var(--radius-sm); 90 font-size: 0.85rem; 91 font-family: var(--font-mono); 92} 93 94.login-form { 95 display: flex; 96 flex-direction: column; 97 gap: 20px; 98 width: 100%; 99} 100 101.login-input-wrapper { 102 position: relative; 103} 104 105.login-input { 106 width: 100%; 107 padding: 14px 16px; 108 background: var(--bg-secondary); 109 border: 1px solid var(--border); 110 border-radius: var(--radius-md); 111 color: var(--text-primary); 112 font-size: 1rem; 113 transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); 114 box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 115} 116 117.login-input:focus { 118 outline: none; 119 border-color: var(--accent); 120 box-shadow: 0 0 0 4px var(--accent-subtle); 121 background: var(--bg-primary); 122} 123 124.login-input::placeholder { 125 color: var(--text-tertiary); 126} 127 128.login-suggestions { 129 position: absolute; 130 top: calc(100% + 8px); 131 left: 0; 132 right: 0; 133 background: var(--bg-elevated); 134 border: 1px solid var(--border); 135 border-radius: var(--radius-md); 136 box-shadow: var(--shadow-lg); 137 overflow: hidden; 138 z-index: 100; 139 max-height: 300px; 140 overflow-y: auto; 141} 142 143.login-suggestion { 144 display: flex; 145 align-items: center; 146 gap: 12px; 147 width: 100%; 148 padding: 12px 16px; 149 background: transparent; 150 border: none; 151 cursor: pointer; 152 text-align: left; 153 transition: background 0.1s; 154 border-bottom: 1px solid var(--border); 155} 156 157.login-suggestion:last-child { 158 border-bottom: none; 159} 160 161.login-suggestion:hover, 162.login-suggestion.selected { 163 background: var(--bg-tertiary); 164} 165 166.login-suggestion-avatar { 167 width: 36px; 168 height: 36px; 169 border-radius: var(--radius-full); 170 background: linear-gradient(135deg, var(--accent), #a855f7); 171 display: flex; 172 align-items: center; 173 justify-content: center; 174 flex-shrink: 0; 175 overflow: hidden; 176 font-size: 0.8rem; 177 font-weight: 600; 178 color: white; 179} 180 181.login-suggestion-avatar img { 182 width: 100%; 183 height: 100%; 184 object-fit: cover; 185} 186 187.login-suggestion-info { 188 display: flex; 189 flex-direction: column; 190 min-width: 0; 191 gap: 2px; 192} 193 194.login-suggestion-name { 195 font-weight: 600; 196 font-size: 0.95rem; 197 color: var(--text-primary); 198 white-space: nowrap; 199 overflow: hidden; 200 text-overflow: ellipsis; 201} 202 203.login-suggestion-handle { 204 font-size: 0.85rem; 205 color: var(--text-secondary); 206 white-space: nowrap; 207 overflow: hidden; 208 text-overflow: ellipsis; 209} 210 211.login-error { 212 padding: 12px 16px; 213 background: rgba(239, 68, 68, 0.1); 214 border: 1px solid rgba(239, 68, 68, 0.2); 215 border-radius: var(--radius-md); 216 color: var(--error); 217 font-size: 0.875rem; 218 text-align: center; 219} 220 221.login-submit { 222 padding: 14px 24px; 223 font-size: 1rem; 224 font-weight: 600; 225 width: 100%; 226 justify-content: center; 227} 228 229.login-avatar-large { 230 width: 80px; 231 height: 80px; 232 border-radius: var(--radius-full); 233 background: linear-gradient(135deg, var(--accent), #a855f7); 234 display: flex; 235 align-items: center; 236 justify-content: center; 237 margin-bottom: 20px; 238 font-weight: 700; 239 font-size: 2rem; 240 color: white; 241 overflow: hidden; 242 box-shadow: var(--shadow-md); 243} 244 245.login-avatar-large img { 246 width: 100%; 247 height: 100%; 248 object-fit: cover; 249} 250 251.login-welcome { 252 font-size: 1.25rem; 253 font-weight: 600; 254 margin-bottom: 32px; 255 text-align: center; 256 color: var(--text-primary); 257} 258 259.login-actions { 260 display: flex; 261 flex-direction: column; 262 gap: 12px; 263 width: 100%; 264} 265 266.morph-container { 267 display: inline-block; 268 color: var(--text-primary); 269 font-weight: 700; 270 transition: 271 opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1), 272 transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), 273 filter 0.4s cubic-bezier(0.4, 0, 0.2, 1); 274 white-space: nowrap; 275 vertical-align: bottom; 276} 277 278.morph-out { 279 opacity: 0; 280 transform: translateY(8px) scale(0.95); 281 filter: blur(4px); 282} 283 284.morph-in { 285 opacity: 1; 286 transform: translateY(0) scale(1); 287 filter: blur(0); 288} 289 290.login-legal { 291 margin-top: 24px; 292 font-size: 0.85rem; 293 color: var(--text-tertiary); 294 text-align: center; 295 line-height: 1.5; 296} 297 298.login-legal a { 299 color: var(--accent); 300 text-decoration: underline; 301 text-decoration-color: var(--accent); 302 text-underline-offset: 4px; 303 font-weight: 500; 304} 305 306.login-legal a:hover { 307 text-decoration-thickness: 2px; 308 opacity: 0.8; 309} 310 311@media (max-width: 480px) { 312 .login-heading { 313 font-size: 1.25rem; 314 flex-wrap: wrap; 315 gap: 4px; 316 padding: 0 10px; 317 } 318 319 .login-header-group { 320 margin-bottom: 32px; 321 gap: 16px; 322 } 323 324 .login-logo-img { 325 width: 48px; 326 height: 48px; 327 } 328 329 .login-x { 330 font-size: 1.5rem; 331 } 332 333 .login-atproto-icon svg { 334 width: 48px; 335 height: 48px; 336 } 337} 338 339.login-divider { 340 display: flex; 341 align-items: center; 342 text-align: center; 343 margin: 24px 0; 344 color: var(--text-tertiary); 345 font-size: 13px; 346 font-weight: 500; 347 text-transform: uppercase; 348 letter-spacing: 0.5px; 349} 350 351.login-divider::before, 352.login-divider::after { 353 content: ""; 354 flex: 1; 355 border-bottom: 1px solid var(--border); 356} 357 358.login-divider::before { 359 margin-right: 16px; 360} 361 362.login-divider::after { 363 margin-left: 16px; 364} 365 366.login-signup-btn { 367 width: 100%; 368 border: 1px solid var(--border); 369 background: transparent; 370 color: var(--text-primary); 371 transition: all 0.2s; 372} 373 374.login-signup-btn:hover { 375 border-color: var(--accent); 376 background: var(--bg-hover); 377 color: var(--accent); 378}