|
458 | 458 | border-color: rgba(0,0,0,0.09); |
459 | 459 | --_glow-color: rgba(100,140,255,0.12); |
460 | 460 | } |
| 461 | + |
| 462 | +/* ============================================================ |
| 463 | + GRADIENT EFFECT CARDS — hover/shine/outline/aura |
| 464 | + Pattern: .card-gradient-hover .card-gradient-hover-{color} |
| 465 | + ============================================================ */ |
| 466 | + |
| 467 | +/* ── Gradient Hover — gradient washes in on hover ── */ |
| 468 | +.card-gradient-hover { |
| 469 | + position: relative; |
| 470 | + border-radius: var(--radius-lg); |
| 471 | + border: 1px solid color-mix(in srgb, var(--card-gc1, var(--color-primary)) 20%, transparent); |
| 472 | + background: var(--bg-secondary); |
| 473 | + overflow: hidden; |
| 474 | + transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease; |
| 475 | +} |
| 476 | +.card-gradient-hover::before { |
| 477 | + content: ""; |
| 478 | + position: absolute; |
| 479 | + inset: 0; |
| 480 | + background: linear-gradient(135deg, var(--card-gc1, var(--color-primary)), var(--card-gc2, var(--color-accent))); |
| 481 | + opacity: 0; |
| 482 | + transition: opacity 0.35s ease; |
| 483 | + z-index: 0; |
| 484 | +} |
| 485 | +.card-gradient-hover > * { position: relative; z-index: 1; } |
| 486 | +.card-gradient-hover:hover::before { opacity: 0.13; } |
| 487 | +.card-gradient-hover:hover { |
| 488 | + transform: translateY(-6px); |
| 489 | + border-color: color-mix(in srgb, var(--card-gc1, var(--color-primary)) 55%, transparent); |
| 490 | + box-shadow: 0 14px 40px color-mix(in srgb, var(--card-gc1, var(--color-primary)) 22%, transparent); |
| 491 | +} |
| 492 | + |
| 493 | +.card-gradient-hover-primary { |
| 494 | + --card-gc1: var(--color-primary); |
| 495 | + --card-gc2: color-mix(in oklch, var(--color-primary) 65%, #fff); |
| 496 | +} |
| 497 | +.card-gradient-hover-accent { |
| 498 | + --card-gc1: var(--color-accent); |
| 499 | + --card-gc2: var(--color-primary); |
| 500 | +} |
| 501 | +.card-gradient-hover-success { |
| 502 | + --card-gc1: var(--color-success); |
| 503 | + --card-gc2: var(--color-primary); |
| 504 | +} |
| 505 | +.card-gradient-hover-error { |
| 506 | + --card-gc1: var(--color-error); |
| 507 | + --card-gc2: var(--color-accent); |
| 508 | +} |
| 509 | +.card-gradient-hover-fire { |
| 510 | + --card-gc1: var(--color-error); |
| 511 | + --card-gc2: var(--color-warning); |
| 512 | +} |
| 513 | +.card-gradient-hover-ocean { |
| 514 | + --card-gc1: var(--color-primary); |
| 515 | + --card-gc2: var(--color-accent); |
| 516 | +} |
| 517 | +.card-gradient-hover-sunset { |
| 518 | + --card-gc1: #ff6b35; |
| 519 | + --card-gc2: #ff2d7c; |
| 520 | +} |
| 521 | +.card-gradient-hover-aurora { |
| 522 | + --card-gc1: #00c6ff; |
| 523 | + --card-gc2: #a855f7; |
| 524 | +} |
| 525 | + |
| 526 | +/* ── Shine Cards — gradient + sweep animation ── */ |
| 527 | +.card-shine { |
| 528 | + position: relative; |
| 529 | + border-radius: var(--radius-lg); |
| 530 | + background: linear-gradient(to right, var(--card-gc1, var(--color-primary)), var(--card-gc2, var(--color-accent))); |
| 531 | + border: none; |
| 532 | + overflow: hidden; |
| 533 | + color: #fff; |
| 534 | + transition: transform 0.3s ease, box-shadow 0.3s ease, filter 0.3s ease; |
| 535 | +} |
| 536 | +.card-shine::after { |
| 537 | + content: ""; |
| 538 | + position: absolute; |
| 539 | + top: -50%; left: -75%; |
| 540 | + width: 50%; height: 200%; |
| 541 | + background: linear-gradient(120deg, transparent 0%, color-mix(in srgb, #fff 22%, transparent) 50%, transparent 100%); |
| 542 | + transform: skewX(-20deg); |
| 543 | + animation: shineSweep 4.5s ease-in-out infinite; |
| 544 | +} |
| 545 | +.card-shine:hover { |
| 546 | + transform: translateY(-5px) scale(1.01); |
| 547 | + box-shadow: 0 16px 40px color-mix(in srgb, var(--card-gc1, var(--color-primary)) 32%, transparent); |
| 548 | + filter: brightness(1.1) saturate(1.1); |
| 549 | +} |
| 550 | + |
| 551 | +.card-shine-primary { --card-gc1: var(--color-primary); --card-gc2: color-mix(in oklch, var(--color-primary) 65%, #fff); } |
| 552 | +.card-shine-accent { --card-gc1: var(--color-accent); --card-gc2: var(--color-primary); } |
| 553 | +.card-shine-fire { --card-gc1: var(--color-error); --card-gc2: var(--color-warning); } |
| 554 | +.card-shine-ocean { --card-gc1: var(--color-primary); --card-gc2: var(--color-accent); } |
| 555 | +.card-shine-sunset { --card-gc1: #ff6b35; --card-gc2: #ff2d7c; } |
| 556 | +.card-shine-aurora { --card-gc1: #00c6ff; --card-gc2: #a855f7; } |
| 557 | +.card-shine-cosmic { --card-gc1: #7c3aed; --card-gc2: #c026d3; } |
| 558 | + |
| 559 | +/* ── Outline Gradient Cards — animated gradient border ── */ |
| 560 | +.card-outline-gradient { |
| 561 | + position: relative; |
| 562 | + border-radius: var(--radius-lg); |
| 563 | + background: var(--bg-secondary); |
| 564 | + border: none; |
| 565 | + transition: transform 0.3s ease, box-shadow 0.3s ease; |
| 566 | +} |
| 567 | +.card-outline-gradient::before { |
| 568 | + content: ""; |
| 569 | + position: absolute; |
| 570 | + inset: 0; |
| 571 | + border-radius: inherit; |
| 572 | + padding: 2px; |
| 573 | + background: linear-gradient(135deg, var(--card-og1, var(--color-primary)), var(--card-og2, var(--color-accent)), var(--card-og1, var(--color-primary))); |
| 574 | + background-size: 200% 200%; |
| 575 | + animation: shineShift 3.5s ease infinite; |
| 576 | + -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| 577 | + -webkit-mask-composite: destination-out; |
| 578 | + mask-composite: exclude; |
| 579 | +} |
| 580 | +.card-outline-gradient:hover { |
| 581 | + transform: translateY(-5px); |
| 582 | + box-shadow: 0 14px 36px color-mix(in srgb, var(--card-og1, var(--color-primary)) 20%, transparent); |
| 583 | +} |
| 584 | + |
| 585 | +.card-outline-gradient-primary { --card-og1: var(--color-primary); --card-og2: color-mix(in oklch, var(--color-primary) 65%, #fff); } |
| 586 | +.card-outline-gradient-accent { --card-og1: var(--color-accent); --card-og2: var(--color-primary); } |
| 587 | +.card-outline-gradient-fire { --card-og1: var(--color-error); --card-og2: var(--color-warning); } |
| 588 | +.card-outline-gradient-ocean { --card-og1: var(--color-primary); --card-og2: var(--color-accent); } |
| 589 | +.card-outline-gradient-sunset { --card-og1: #ff6b35; --card-og2: #ff2d7c; } |
| 590 | +.card-outline-gradient-aurora { --card-og1: #00c6ff; --card-og2: #a855f7; } |
| 591 | +.card-outline-gradient-cosmic { --card-og1: #7c3aed; --card-og2: #c026d3; } |
| 592 | + |
| 593 | +/* ── Aura Cards — glow halo blooms on hover ── */ |
| 594 | +.card-aura { |
| 595 | + position: relative; |
| 596 | + border: none; |
| 597 | + border-radius: var(--radius-lg); |
| 598 | + background: var(--card-aura-bg, var(--bg-secondary)); |
| 599 | + z-index: 1; |
| 600 | + transition: transform 0.35s ease, filter 0.35s ease; |
| 601 | +} |
| 602 | +.card-aura::before { |
| 603 | + content: ""; |
| 604 | + position: absolute; |
| 605 | + inset: -10px; |
| 606 | + border-radius: calc(var(--radius-lg) + 10px); |
| 607 | + background: var(--card-aura-glow, linear-gradient(135deg, var(--color-primary), var(--color-accent))); |
| 608 | + filter: blur(20px); |
| 609 | + opacity: 0; |
| 610 | + z-index: -1; |
| 611 | + transition: opacity 0.4s ease; |
| 612 | +} |
| 613 | +.card-aura:hover::before { opacity: 0.65; } |
| 614 | +.card-aura:hover { transform: translateY(-6px); filter: brightness(1.06); } |
| 615 | + |
| 616 | +.card-aura-primary { |
| 617 | + --card-aura-bg: var(--bg-secondary); |
| 618 | + --card-aura-glow: linear-gradient(135deg, var(--color-primary), var(--color-accent)); |
| 619 | +} |
| 620 | +.card-aura-sunset { |
| 621 | + --card-aura-bg: linear-gradient(160deg, #1a0800, #2a0e00); |
| 622 | + --card-aura-glow: linear-gradient(135deg, #ff6b35, #ff2d7c); |
| 623 | +} |
| 624 | +.card-aura-aurora { |
| 625 | + --card-aura-bg: linear-gradient(160deg, #000d1a, #0a1626); |
| 626 | + --card-aura-glow: linear-gradient(135deg, #00c6ff, #a855f7); |
| 627 | +} |
| 628 | +.card-aura-cosmic { |
| 629 | + --card-aura-bg: linear-gradient(160deg, #0d0014, #160024); |
| 630 | + --card-aura-glow: linear-gradient(135deg, #7c3aed, #c026d3); |
| 631 | +} |
| 632 | +.card-aura-gold { |
| 633 | + --card-aura-bg: linear-gradient(160deg, #110e00, #1e1800); |
| 634 | + --card-aura-glow: linear-gradient(135deg, #f59e0b, #fbbf24); |
| 635 | +} |
| 636 | +.card-aura-ocean { |
| 637 | + --card-aura-bg: linear-gradient(160deg, #00101a, #001c2e); |
| 638 | + --card-aura-glow: linear-gradient(135deg, var(--color-primary), var(--color-accent)); |
| 639 | +} |
0 commit comments