A fork of selfhosted.social for self.surf
at main 491 lines 9.8 kB view raw
1/* Modern Theme for pds-dash */ 2 3* { 4 box-sizing: border-box; 5} 6 7html { 8 overflow-x: hidden; 9 width: 100%; 10} 11 12:root { 13 /* Dark theme derived from provided OKLCH palette */ 14 color-scheme: dark; 15 16 /* Base and content colors */ 17 --color-base-100: oklch(25.33% 0.016 252.42); 18 --color-base-200: oklch(23.26% 0.014 253.1); 19 --color-base-300: oklch(21.15% 0.012 254.09); 20 --color-base-content: oklch(97.807% 0.029 256.847); 21 22 /* Brand and semantic colors */ 23 --color-primary: oklch(58% 0.233 277.117); 24 --color-primary-content: oklch(96% 0.018 272.314); 25 --color-secondary: oklch(65% 0.241 354.308); 26 --color-secondary-content: oklch(94% 0.028 342.258); 27 --color-accent: oklch(77% 0.152 181.912); 28 --color-accent-content: oklch(38% 0.063 188.416); 29 --color-neutral: oklch(14% 0.005 285.823); 30 --color-neutral-content: oklch(92% 0.004 286.32); 31 --color-info: oklch(74% 0.16 232.661); 32 --color-info-content: oklch(29% 0.066 243.157); 33 --color-success: oklch(76% 0.177 163.223); 34 --color-success-content: oklch(37% 0.077 168.94); 35 --color-warning: oklch(82% 0.189 84.429); 36 --color-warning-content: oklch(41% 0.112 45.904); 37 --color-error: oklch(71% 0.194 13.428); 38 --color-error-content: oklch(27% 0.105 12.094); 39 40 /* Radii, sizes, borders */ 41 --radius-selector: 0.5rem; 42 --radius-field: 0.25rem; 43 --radius-box: 0.5rem; 44 --size-selector: 0.25rem; 45 --size-field: 0.25rem; 46 --border: 1px; 47 --depth: 1; 48 --noise: 0; 49 50 /* Map existing theme variables to the new palette for minimal changes elsewhere */ 51 --background-color: var(--color-base-300); 52 --header-background-color: var(--color-base-200); 53 --content-background-color: var(--color-base-200); 54 --text-color: var(--color-base-content); 55 --text-secondary-color: color-mix( 56 in oklab, 57 var(--color-base-content) 70%, 58 var(--color-base-100) 59 ); 60 --border-color: var(--color-base-300); 61 --link-color: var(--color-primary); 62 --link-hover-color: var(--color-primary-content); 63 --time-color: var(--color-secondary); 64 --indicator-inactive-color: var(--color-base-300); 65 --indicator-active-color: var(--color-primary); 66 67 /* Subtle hover background for dark */ 68 --button-hover: color-mix( 69 in oklab, 70 var(--color-base-200) 80%, 71 var(--color-base-content) 72 ); 73} 74 75body { 76 margin: 0; 77 padding: 0; 78 min-width: 320px; 79 min-height: 100vh; 80 background-color: var(--background-color); 81 font-family: 82 "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, 83 Ubuntu, Cantarell, "Helvetica Neue", sans-serif; 84 font-size: 18px; 85 line-height: 1.5; 86 color: var(--text-color); 87 border-color: var(--border-color); 88 overflow-wrap: break-word; 89 word-break: break-word; 90 hyphens: none; 91 overflow-x: hidden; 92} 93 94code { 95 background-color: rgba(255, 255, 255, 0.1); 96 padding: 0.15rem 0.4rem; 97 border-radius: 4px; 98 font-size: 0.9em; 99} 100 101a { 102 font-weight: 500; 103 color: var(--link-color); 104 text-decoration: none; 105 transition: color 0.15s ease; 106} 107a:hover { 108 color: var(--link-hover-color); 109} 110 111h1 { 112 font-size: 2.5em; 113 line-height: 1.2; 114 font-weight: 700; 115} 116 117#app { 118 max-width: 1400px; 119 width: 100%; 120 margin: 0 auto; 121 padding: 0; 122 text-align: center; 123} 124 125/* Post Component */ 126#postContainer { 127 display: flex; 128 flex-direction: column; 129 border-radius: 12px; 130 border: 1px solid var(--border-color); 131 background-color: var(--content-background-color); 132 margin-bottom: 20px; 133 overflow-wrap: break-word; 134 overflow: hidden; 135 box-shadow: var(--card-shadow); 136 transition: transform 0.2s ease, box-shadow 0.2s ease; 137} 138 139#postContainer:hover { 140 transform: translateY(-2px); 141 box-shadow: 142 0 10px 15px -3px rgba(0, 0, 0, 0.1), 143 0 4px 6px -2px rgba(0, 0, 0, 0.05); 144} 145 146#postHeader { 147 display: flex; 148 flex-direction: row; 149 align-items: center; 150 justify-content: start; 151 background-color: var(--header-background-color); 152 padding: 12px 16px; 153 height: 60px; 154 border-bottom: 1px solid var(--border-color); 155 font-weight: 600; 156 overflow-wrap: break-word; 157} 158 159#displayName { 160 display: block; 161 color: var(--text-color); 162 font-size: 1.1em; 163 padding: 0; 164 margin: 0 0 2px 0; 165 text-overflow: ellipsis; 166 overflow: hidden; 167 white-space: nowrap; 168 width: 100%; 169 letter-spacing: -0.01em; 170} 171 172#handle { 173 display: flex; 174 align-items: center; 175 color: #6b7280; 176 font-size: 0.85em; 177 font-weight: 400; 178 padding: 0; 179 margin: 0; 180 gap: 8px; 181} 182 183#postLink { 184 color: var(--time-color) !important; 185 font-size: 0.85em; 186 padding: 0; 187 margin: 0; 188 opacity: 0.9; 189} 190 191#postContent { 192 display: flex; 193 text-align: start; 194 flex-direction: column; 195 padding: 16px; 196 background-color: var(--content-background-color); 197 color: var(--text-color); 198 overflow-wrap: break-word; 199 white-space: pre-line; 200 line-height: 1.6; 201} 202 203#replyingText, #quotingText { 204 font-size: 0.8em; 205 margin: 0; 206 padding: 0 0 10px 0; 207 color: #6b7280; 208} 209 210#postText { 211 margin: 0 0 8px 0; 212 padding: 0; 213 overflow-wrap: break-word; 214 word-break: break-word; 215 hyphens: none; 216 font-size: 1.05em; 217} 218 219#headerText { 220 margin-left: 12px; 221 font-size: 0.9em; 222 text-align: start; 223 word-break: break-word; 224 max-width: 80%; 225 max-height: 95%; 226 align-self: flex-start; 227 margin-top: auto; 228 margin-bottom: auto; 229} 230 231#carouselContainer { 232 position: relative; 233 width: 100%; 234 margin-top: 12px; 235 display: flex; 236 flex-direction: column; 237 align-items: center; 238 border-radius: 8px; 239 overflow: hidden; 240} 241 242#carouselControls { 243 display: flex; 244 justify-content: space-between; 245 align-items: center; 246 width: 100%; 247 max-width: 500px; 248 margin-top: 10px; 249} 250 251#carouselIndicators { 252 display: flex; 253 gap: 6px; 254} 255 256.indicator { 257 width: 6px; 258 height: 6px; 259 background-color: var(--indicator-inactive-color); 260 border-radius: 50%; 261 transition: background-color 0.2s ease, transform 0.2s ease; 262} 263 264.indicator.active { 265 background-color: var(--indicator-active-color); 266 transform: scale(1.3); 267} 268 269#prevBtn, 270#nextBtn { 271 background-color: var(--button-bg); 272 color: var(--text-color); 273 border: 1px solid var(--border-color); 274 width: 32px; 275 height: 32px; 276 cursor: pointer; 277 display: flex; 278 align-items: center; 279 justify-content: center; 280 border-radius: 50%; 281 transition: background-color 0.15s ease, transform 0.15s ease; 282 font-size: 16px; 283} 284 285#prevBtn:hover:not(:disabled), 286#nextBtn:hover:not(:disabled) { 287 background-color: var(--button-hover); 288 transform: scale(1.05); 289} 290 291#prevBtn:disabled, 292#nextBtn:disabled { 293 opacity: 0.4; 294 cursor: not-allowed; 295} 296 297#embedVideo { 298 width: 100%; 299 max-width: 500px; 300 margin-top: 12px; 301 align-self: center; 302 border-radius: 8px; 303 overflow: hidden; 304} 305 306#embedImages { 307 min-width: min(100%, 500px); 308 max-width: min(100%, 500px); 309 max-height: 500px; 310 object-fit: contain; 311 margin: 0; 312 border-radius: 8px; 313} 314 315/* Account Component */ 316#accountContainer { 317 display: flex; 318 text-align: start; 319 align-items: center; 320 background-color: var(--content-background-color); 321 padding: 12px; 322 margin-bottom: 15px; 323 border: 1px solid var(--border-color); 324 border-radius: 12px; 325 transition: background-color 0.15s ease; 326} 327 328#accountContainer:hover { 329 background-color: var(--hover-bg); 330} 331 332#accountName { 333 margin-left: 12px; 334 font-size: 0.95em; 335 max-width: 80%; 336 overflow: hidden; 337 text-overflow: ellipsis; 338 white-space: nowrap; 339 font-weight: 500; 340} 341 342#avatar { 343 width: 48px; 344 height: 48px; 345 margin: 0; 346 object-fit: cover; 347 border-radius: 50%; 348 border: 2px solid white; 349 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 350} 351 352/* App.Svelte Layout */ 353#Content { 354 display: flex; 355 width: 100%; 356 max-width: 100vw; 357 height: 100%; 358 flex-direction: row; 359 justify-content: space-between; 360 align-items: flex-start; 361 background-color: var(--background-color); 362 color: var(--text-color); 363 gap: 20px; 364 padding: 0 16px; 365} 366 367#Feed { 368 overflow-y: auto; 369 flex: 1; 370 min-width: 0; 371 height: 100vh; 372 align-self: flex-start; 373} 374 375#spacer { 376 padding: 0; 377 margin: 0; 378 height: 10vh; 379 width: 100%; 380} 381 382#Account { 383 flex: 0 0 400px; 384 max-width: 400px; 385 display: flex; 386 flex-direction: column; 387 border: 1px solid var(--border-color); 388 background-color: var(--content-background-color); 389 max-height: 80vh; 390 padding: 24px; 391 border-radius: 12px; 392 box-shadow: var(--card-shadow); 393} 394 395#accountsList { 396 display: flex; 397 flex-direction: column; 398 overflow-y: auto; 399 height: 100%; 400 width: 100%; 401 padding: 8px 0; 402 margin: 0; 403} 404 405#Header { 406 text-align: center; 407 font-size: 1.8em; 408 margin-bottom: 16px; 409 font-weight: 700; 410 background: linear-gradient(to right, var(--link-color), #8b5cf6); 411 -webkit-background-clip: text; 412 -webkit-text-fill-color: transparent; 413 background-clip: text; 414} 415 416/* Mobile Styles */ 417@media screen and (max-width: 768px) { 418 #Content { 419 flex-direction: column; 420 width: 100%; 421 max-width: 100vw; 422 padding: 12px; 423 margin: 0; 424 gap: 16px; 425 } 426 427 #Account { 428 flex: 1 1 auto; 429 width: 100%; 430 max-width: 100%; 431 padding: 16px; 432 margin: 0; 433 height: auto; 434 order: -1; 435 } 436 437 #Feed { 438 flex: 1 1 auto; 439 width: 100%; 440 margin: 0; 441 padding: 0; 442 overflow-y: visible; 443 } 444 445 #spacer { 446 height: 5vh; 447 } 448 449 body { 450 font-size: 16px; 451 } 452 453 #postHeader { 454 padding: 10px; 455 height: auto; 456 min-height: 50px; 457 } 458} 459 460/* Scrollbar Styles */ 461::-webkit-scrollbar { 462 width: 0px; 463 background: transparent; 464 padding: 0; 465 margin: 0; 466} 467::-webkit-scrollbar-thumb { 468 background: transparent; 469 border-radius: 0; 470} 471::-webkit-scrollbar-track { 472 background: transparent; 473 border-radius: 0; 474} 475::-webkit-scrollbar-corner { 476 background: transparent; 477 border-radius: 0; 478} 479::-webkit-scrollbar-button { 480 background: transparent; 481 border-radius: 0; 482} 483 484* { 485 scrollbar-width: none; 486 scrollbar-color: transparent transparent; 487 -ms-overflow-style: none; /* IE and Edge */ 488 -webkit-overflow-scrolling: touch; 489 -webkit-scrollbar: none; /* Safari */ 490} 491