styles.css
1 :root { 2 /* Restored original color palette */ 3 --primary-color: #00aaa0; /* Teal/turquoise - main accent */ 4 --primary-dark: #008e87; /* Darker teal for hover states */ 5 --secondary-color: #2d3436; /* Dark gray/almost black for header/footer */ 6 --background-color: #f5f7fa; /* Light gray background */ 7 --text-color: #2d3436; /* Dark text */ 8 --card-bg: #ffffff; /* White card backgrounds */ 9 --card-shadow: 0 2px 10px rgba(0, 0, 0, 0.08); /* Subtle shadow */ 10 --highlight-color: #e67e22; /* Orange for highlights/accents */ 11 --button-color: #00aaa0; /* Teal for buttons */ 12 --button-hover: #008e87; /* Darker teal for button hover */ 13 --code-bg: #f0f2f5; /* Light gray for code blocks */ 14 --border-color: #eaeaea; /* Very light gray for borders */ 15 } 16 17 body { 18 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, 19 Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; 20 line-height: 1.6; 21 color: var(--text-color); 22 background-color: var(--background-color); 23 margin: 0; 24 padding: 0; 25 } 26 27 .container { 28 max-width: 1200px; 29 margin: 0 auto; 30 padding: 0 20px; 31 } 32 33 header { 34 background-color: var(--secondary-color); 35 color: white; 36 padding: 30px 0; 37 text-align: center; 38 box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); 39 position: relative; 40 overflow: hidden; 41 } 42 43 header::after { 44 content: ""; 45 position: absolute; 46 bottom: 0; 47 left: 0; 48 right: 0; 49 height: 4px; 50 background: var(--primary-color); 51 } 52 53 header h1 { 54 margin-bottom: 10px; 55 color: white; 56 } 57 58 header p { 59 font-size: 1.2rem; 60 margin: 0; 61 opacity: 0.9; 62 } 63 64 nav { 65 background-color: var(--secondary-color); 66 position: sticky; 67 top: 0; 68 z-index: 100; 69 border-bottom: 4px solid var(--primary-color); 70 } 71 72 nav ul { 73 display: flex; 74 list-style-type: none; 75 margin: 0; 76 padding: 0; 77 justify-content: center; 78 flex-wrap: wrap; 79 } 80 81 nav li { 82 margin: 0; 83 } 84 85 nav a { 86 display: block; 87 color: white; 88 text-decoration: none; 89 padding: 15px 20px; 90 transition: background-color 0.3s; 91 } 92 93 nav a:hover { 94 background-color: var(--primary-color); 95 } 96 97 section { 98 padding: 40px 0; 99 scroll-margin-top: 60px; 100 } 101 102 h2, 103 h3 { 104 color: var(--primary-color); 105 } 106 107 .github-buttons { 108 margin-top: 20px; 109 } 110 111 .github-buttons a { 112 display: inline-block; 113 background-color: var(--button-color); 114 color: white; 115 padding: 10px 20px; 116 text-decoration: none; 117 border-radius: 4px; 118 margin: 5px; 119 transition: background-color 0.3s; 120 font-weight: 500; 121 } 122 123 .github-buttons a:hover { 124 background-color: var(--code-bg); 125 color: var(--button-hover); 126 } 127 128 .screenshot { 129 max-width: 100%; 130 display: block; 131 margin: 20px auto; 132 border-radius: 8px; 133 box-shadow: var(--card-shadow); 134 border: 1px solid var(--border-color); 135 } 136 137 .features-grid { 138 display: grid; 139 grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); 140 gap: 20px; 141 margin: 30px 0; 142 } 143 144 /* Feature cards - restore original styling */ 145 .feature-card { 146 background-color: var(--card-bg); 147 border-radius: 8px; 148 padding: 20px; 149 box-shadow: var(--card-shadow); 150 border-top: 3px solid var(--primary-color); 151 transition: transform 0.2s ease; 152 } 153 154 /* Remove alternating colors that were added */ 155 .feature-card:nth-child(3n-1), 156 .feature-card:nth-child(3n) { 157 border-top-color: var(--primary-color); 158 } 159 160 .feature-card:hover { 161 transform: translateY(-3px); 162 } 163 164 .feature-card h3 { 165 margin-top: 0; 166 color: var(--primary-color); 167 } 168 169 .code-block { 170 background-color: var(--code-bg); 171 border-left: 4px solid var(--primary-color); 172 padding: 15px; 173 margin: 20px 0; 174 overflow-x: auto; 175 border-radius: 0 4px 4px 0; 176 } 177 178 .code-block pre { 179 margin: 0; 180 font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; 181 font-size: 14px; 182 } 183 184 footer { 185 background-color: var(--secondary-color); 186 color: white; 187 text-align: center; 188 padding: 20px 0; 189 margin-top: 40px; 190 position: relative; 191 } 192 193 footer::before { 194 content: ""; 195 position: absolute; 196 top: 0; 197 left: 0; 198 right: 0; 199 height: 4px; 200 background: var(--primary-color); 201 } 202 203 footer a { 204 color: var(--primary-color); 205 text-decoration: underline; 206 } 207 208 footer a:hover { 209 color: white; 210 } 211 212 /* Language toggle */ 213 .language-toggle { 214 position: absolute; 215 top: 10px; 216 right: 20px; 217 } 218 219 .language-toggle button { 220 background: transparent; 221 color: white; 222 border: 1px solid var(--primary-color); 223 padding: 5px 10px; 224 cursor: pointer; 225 transition: background-color 0.3s; 226 } 227 228 .language-toggle button:hover { 229 background-color: var(--primary-color); 230 } 231 232 .language-toggle button.active { 233 background-color: var(--primary-color); 234 color: white; 235 } 236 237 /* Add fixed language toggle for scrolled state */ 238 .floating-language-toggle { 239 position: fixed; 240 top: 20px; 241 right: 20px; /* Changed from left: 20px to right: 20px */ 242 display: flex; 243 flex-direction: column; 244 gap: 5px; 245 z-index: 1000; 246 opacity: 0; 247 transform: translateX( 248 20px 249 ); /* Changed from translateX(-20px) to translateX(20px) */ 250 transition: all 0.3s ease; 251 pointer-events: none; 252 } 253 254 .floating-language-toggle.visible { 255 opacity: 0.8; 256 transform: translateX(0); 257 pointer-events: all; 258 } 259 260 .floating-language-toggle:hover { 261 opacity: 1; 262 } 263 264 .floating-language-toggle button { 265 background-color: var(--secondary-color); 266 color: white; 267 border: 1px solid var(--primary-color); 268 padding: 8px 10px; 269 cursor: pointer; 270 border-radius: 4px; 271 font-weight: 600; 272 box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 273 transition: all 0.2s; 274 width: 40px; 275 } 276 277 .floating-language-toggle button:hover { 278 background-color: var(--primary-color); 279 transform: translateY(-2px); 280 } 281 282 .floating-language-toggle button.active { 283 background-color: var(--primary-color); 284 } 285 286 /* Responsive design */ 287 @media (max-width: 768px) { 288 nav ul { 289 flex-direction: column; 290 } 291 292 nav li { 293 width: 100%; 294 text-align: center; 295 } 296 } 297 298 /* Language specific content */ 299 .de { 300 display: none; 301 } 302 303 body.german .en { 304 display: none; 305 } 306 307 body.german .de { 308 display: block; 309 } 310 311 /* Additional styling */ 312 a { 313 color: var(--primary-color); 314 text-decoration: none; 315 } 316 317 a:hover { 318 text-decoration: underline; 319 color: var(--primary-dark); 320 } 321 322 strong { 323 color: var(--primary-dark); 324 } 325 326 ul li, 327 ol li { 328 margin-bottom: 8px; 329 } 330 331 /* Audio wave decoration for header */ 332 .wave-decoration { 333 position: absolute; 334 bottom: 4px; 335 left: 0; 336 right: 0; 337 height: 30px; 338 opacity: 0.1; 339 background: repeating-linear-gradient( 340 45deg, 341 transparent, 342 transparent 10px, 343 rgba(255, 255, 255, 0.5) 10px, 344 rgba(255, 255, 255, 0.5) 20px 345 ); 346 } 347 348 /* Tab Interface Styles */ 349 .tab-container { 350 width: 100%; 351 margin: 20px 0; 352 } 353 354 .tab-buttons { 355 display: flex; 356 overflow-x: auto; 357 border-bottom: 2px solid var(--primary-color); 358 } 359 360 .tab-button { 361 background-color: #f0f2f5; 362 border: none; 363 padding: 15px 25px; 364 margin-right: 5px; 365 cursor: pointer; 366 font-weight: 500; 367 border-radius: 5px 5px 0 0; 368 transition: background-color 0.3s, color 0.3s; 369 } 370 371 .tab-button:hover { 372 background-color: #e0e2e5; 373 } 374 375 .tab-button.active { 376 background-color: var(--primary-color); 377 color: white; 378 } 379 380 .tab-content { 381 display: none; 382 padding: 10px 40px; 383 background-color: var(--card-bg); 384 box-shadow: var(--card-shadow); 385 border-radius: 0 5px 5px 5px; 386 } 387 388 .tab-content.active { 389 display: block; 390 animation: fadeIn 0.5s; 391 } 392 393 /* Back to top button */ 394 .back-to-top { 395 position: fixed; 396 bottom: 20px; 397 right: 20px; 398 background-color: var(--primary-color); 399 color: white; 400 width: 50px; 401 height: 50px; 402 text-align: center; 403 line-height: 50px; 404 border-radius: 50%; 405 cursor: pointer; 406 opacity: 0; 407 transition: opacity 0.3s; 408 box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 409 z-index: 1000; 410 } 411 412 .back-to-top.visible { 413 opacity: 0.8; 414 } 415 416 .back-to-top:hover { 417 opacity: 1; 418 } 419 420 @keyframes fadeIn { 421 from { 422 opacity: 0; 423 } 424 to { 425 opacity: 1; 426 } 427 } 428 429 /* Monospaced subtitle */ 430 .mono-subtitle { 431 font-family: "JetBrains Mono", "Space Mono", monospace; 432 font-size: 1.2rem; 433 letter-spacing: 0.5px; 434 margin: 10px 0; 435 padding: 5px 10px; 436 background-color: rgba(0, 0, 0, 0.15); 437 display: inline-block; 438 border-radius: 3px; 439 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); 440 border-left: 3px solid var(--primary-color); 441 border-right: 3px solid var(--primary-color); 442 transition: all 0.3s ease; 443 } 444 445 .mono-subtitle:hover { 446 transform: translateY(-2px); 447 background-color: rgba(0, 0, 0, 0.25); 448 } 449 450 /* Screenshot container */ 451 .screenshot-container { 452 margin: auto; 453 text-align: center; 454 max-width: 90%; 455 margin-top: 90px; 456 } 457 458 .screenshot-container figcaption { 459 font-style: italic; 460 color: #555; 461 margin-top: 10px; 462 font-size: 0.9rem; 463 } 464 465 .screenshot { 466 border: 1px solid var(--border-color); 467 border-radius: 8px; 468 box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1); 469 max-width: 100%; 470 height: auto; 471 } 472 473 .intro { 474 margin: auto; 475 max-width: 70%; 476 font-weight: 500; 477 text-align: center; 478 } 479 480 /* Add these styles for the installation section */ 481 .installation-options { 482 display: grid; 483 grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); 484 gap: 25px; 485 margin: 20px 0; 486 } 487 488 /* Installation options - restore original styling */ 489 .installation-option { 490 background-color: var(--card-bg); 491 border-radius: 8px; 492 padding: 20px; 493 box-shadow: var(--card-shadow); 494 border-left: 3px solid var(--primary-color); 495 } 496 497 /* Remove alternating colors that were added */ 498 .installation-option:nth-child(even) { 499 border-left-color: var(--primary-color); 500 } 501 502 .installation-option h3 { 503 margin-top: 0; 504 color: var(--primary-color); 505 border-bottom: 1px solid var(--border-color); 506 padding-bottom: 10px; 507 } 508 509 .installation-option ol { 510 padding-left: 20px; 511 } 512 513 .installation-option li { 514 margin-bottom: 10px; 515 } 516 517 /* Note box - restore original styling */ 518 .note-box { 519 background-color: rgba(255, 240, 200, 0.5); 520 border-left: 4px solid var(--highlight-color); 521 padding: 10px 15px; 522 margin-top: 15px; 523 border-radius: 0 4px 4px 0; 524 } 525 526 .note-box p { 527 margin: 0; 528 } 529 530 code { 531 background-color: var(--code-bg); 532 padding: 2px 5px; 533 border-radius: 3px; 534 font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; 535 font-size: 0.9em; 536 } 537 538 /* Warning box - restore original styling */ 539 .warning-box { 540 background-color: rgba(255, 221, 87, 0.2); 541 border-left: 4px solid #ffbb00; 542 padding: 10px 15px; 543 margin: 15px 0; 544 border-radius: 0 4px 4px 0; 545 } 546 547 .warning-box p { 548 margin: 0; 549 color: #664d03; 550 } 551 552 .warning-box strong { 553 color: #664d03; 554 } 555 556 .muted { 557 color: #6c757d; 558 font-style: italic; 559 font-size: 0.9em; 560 } 561 562 /* Sponsor logos in footer */ 563 .sponsors { 564 margin: 20px 0 30px; 565 text-align: center; 566 padding: 35px 0; 567 border-top: 1px solid rgba(255, 255, 255, 0.2); 568 border-bottom: 1px solid rgba(255, 255, 255, 0.2); 569 } 570 571 .sponsors p { 572 font-weight: 500; 573 margin-bottom: 25px; 574 font-size: 1.05rem; 575 color: white; 576 } 577 578 .sponsor-logos { 579 display: flex; 580 align-items: center; 581 justify-content: center; 582 flex-wrap: wrap; 583 gap: 60px; 584 margin: 0 auto; 585 max-width: 90%; 586 } 587 588 .sponsor-logos a { 589 text-decoration: none; 590 transition: transform 0.3s; 591 display: flex; 592 align-items: center; 593 justify-content: center; 594 } 595 596 .sponsor-logos a:hover { 597 transform: scale(1.03); 598 } 599 600 /* Significantly larger logos */ 601 .sponsor-logo { 602 height: auto; 603 width: auto; 604 max-width: 400px; 605 object-fit: contain; 606 transition: transform 0.2s; 607 } 608 609 /* Only apply subtle effects on hover */ 610 .sponsor-logo:hover { 611 transform: translateY(-2px); 612 } 613 614 /* Special handling for PrototypeFund logo */ 615 a[href="https://prototypefund.de"] .sponsor-logo 616 { 617 filter: brightness(0) invert(1); 618 } 619 620 /* Responsive adjustments for logos */ 621 @media (max-width: 992px) { 622 .sponsor-logos { 623 gap: 40px; 624 } 625 626 .sponsor-logo { 627 max-height: 100px; 628 max-width: 350px; 629 } 630 } 631 632 @media (max-width: 768px) { 633 .sponsor-logos { 634 flex-direction: column; 635 gap: 40px; 636 } 637 638 .sponsor-logo { 639 max-height: 90px; 640 max-width: 320px; 641 } 642 643 nav ul { 644 flex-direction: column; 645 } 646 647 nav li { 648 width: 100%; 649 text-align: center; 650 } 651 } 652 653 /* Language-specific visibility classes */ 654 .en-only { 655 display: block; 656 } 657 658 .de-only { 659 display: none; 660 } 661 662 body.german .en-only { 663 display: none; 664 } 665 666 body.german .de-only { 667 display: block; 668 } 669 670 /* Video examples styling */ 671 .video-example { 672 margin-bottom: 50px; 673 padding: 20px; 674 background-color: var(--card-bg); 675 border-radius: 8px; 676 box-shadow: var(--card-shadow); 677 } 678 679 .video-example h3 { 680 color: var(--primary-color); 681 margin-top: 0; 682 border-bottom: 1px solid var(--border-color); 683 padding-bottom: 10px; 684 } 685 686 .video-container { 687 position: relative; 688 width: 100%; 689 padding-bottom: 56.25%; /* 16:9 aspect ratio */ 690 height: 0; 691 margin-top: 20px; 692 } 693 694 .video-container iframe { 695 position: absolute; 696 top: 0; 697 left: 0; 698 width: 100%; 699 height: 100%; 700 border-radius: 4px; 701 } 702 703 /* Add subtle hover effect to video containers */ 704 .video-container:hover { 705 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); 706 } 707 708 /* Before/after comparison container for videos (if needed later) */ 709 .comparison-container { 710 display: grid; 711 grid-template-columns: 1fr 1fr; 712 gap: 20px; 713 margin: 30px 0; 714 } 715 716 @media (max-width: 768px) { 717 .comparison-container { 718 grid-template-columns: 1fr; 719 } 720 } 721 722 /* Instruction box styling */ 723 .instruction-box { 724 background-color: #e8f4f2; 725 border-left: 4px solid var(--primary-color); 726 padding: 15px 20px; 727 margin: 20px 0 30px 0; 728 border-radius: 4px; 729 box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); 730 } 731 732 .instruction-box h3 { 733 margin-top: 0; 734 font-size: 1.2rem; 735 color: var(--primary-color); 736 } 737 738 .instruction-box p { 739 margin-bottom: 0; 740 line-height: 1.5; 741 } 742 743 /* Add icon to instruction box */ 744 .instruction-box h3::before { 745 content: "▶ "; 746 color: var(--primary-color); 747 }