diff options
| author | Danilo M. <danix@danix.xyz> | 2026-04-16 15:27:05 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-04-16 15:27:05 +0200 |
| commit | 5b4ba192f8a7d405c7070f0276cd66bff96699dd (patch) | |
| tree | f4e5e3bef6b748013e14a92369e9f1a043183b98 /themes/danix-xyz-hacker/assets/css/main.min.css | |
| parent | beb62373ad8330e33840ae14d5eb24441d97b543 (diff) | |
| download | danixxyz-5b4ba192f8a7d405c7070f0276cd66bff96699dd.tar.gz danixxyz-5b4ba192f8a7d405c7070f0276cd66bff96699dd.zip | |
feat: add card component with hover lift and glow effects
- Add .card base component with border, rounded corners, glow shadow
- Add .card:hover state with translateY(-2px) lift and enhanced glow
- Add .card-image, .card-body, .card-title, .card-excerpt, .card-footer semantic classes
- Refactor article-list-item.html to use card component classes
- Rebuild CSS: main.min.css updated
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Diffstat (limited to 'themes/danix-xyz-hacker/assets/css/main.min.css')
| -rw-r--r-- | themes/danix-xyz-hacker/assets/css/main.min.css | 206 |
1 files changed, 178 insertions, 28 deletions
diff --git a/themes/danix-xyz-hacker/assets/css/main.min.css b/themes/danix-xyz-hacker/assets/css/main.min.css index 9c0aadb..122dfcb 100644 --- a/themes/danix-xyz-hacker/assets/css/main.min.css +++ b/themes/danix-xyz-hacker/assets/css/main.min.css @@ -1296,8 +1296,182 @@ button, border-color: var(--border); } +/* Button component styles */ + +.btn { + display: inline-flex; + cursor: pointer; + align-items: center; + justify-content: center; + border-radius: 0.25rem; + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + font-weight: 700; + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + background-color: var(--accent); + color: #ffffff; + border: none; + outline: none; +} + +.btn:hover:not(:disabled) { + opacity: 0.85; + transform: translateY(-1px); +} + +.btn:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); + --tw-ring-offset-width: 2px; + ring-color: var(--accent); + ring-offset-color: var(--bg); +} + +.btn:active:not(:disabled) { + transform: translateY(0); + opacity: 0.75; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +/* Button variants */ + +.btn-primary { + background-color: var(--accent); + color: #ffffff; +} + +.btn-primary:hover:not(:disabled) { + background-color: var(--accent); +} + +.btn-outline { + background-color: transparent; + color: var(--accent); + border: 2px solid var(--accent); +} + +.btn-outline:hover:not(:disabled) { + background-color: var(--accent); + color: #ffffff; +} + +/* Button sizes */ + +.btn-sm { + padding-left: 0.75rem; + padding-right: 0.75rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.btn-lg { + padding-left: 1.5rem; + padding-right: 1.5rem; + padding-top: 0.75rem; + padding-bottom: 0.75rem; + font-size: 1.125rem; + line-height: 1.75rem; +} + +/* Icon button (for icons without text) */ + +/* Badge base style */ + +.badge { + display: inline-flex; + align-items: center; + white-space: nowrap; + border-radius: 0.25rem; + padding-left: 0.625rem; + padding-right: 0.625rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + font-family: JetBrains Mono, monospace; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 600; + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + border: 1px solid; +} + /* Article type badge styles */ +/* Legacy type-* classes for compatibility (with badge styling) */ + +/* Card component */ + +.card { + overflow: hidden; + border-radius: 0.5rem; + border-width: 1px; + border-color: var(--border); + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; +} + +article.card.border-border\/30.rounded-lg.overflow-hidden.group.bg-bg { + border-color: var(--border); + box-shadow: 0 0 20px var(--accent-glow); +} + +article.border.border-border\/30.card.overflow-hidden.group.bg-bg { + border-color: var(--border); + box-shadow: 0 0 20px var(--accent-glow); +} + +article.border.border-border\/30.rounded-lg.card.group.bg-bg { + border-color: var(--border); + box-shadow: 0 0 20px var(--accent-glow); +} + +.card { + box-shadow: 0 0 20px var(--accent-glow); +} + +.card:hover { + transform: translateY(-2px); + box-shadow: 0 0 30px var(--accent-glow); +} + +.card-image { + aspect-ratio: 16 / 9; + width: 100%; + -o-object-fit: cover; + object-fit: cover; +} + +.card-body > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +} + +.card-body { + padding: 1.25rem; +} + +@media (min-width: 768px) { + .card-body { + padding: 1.5rem; + } +} + +/* Article metadata styling (with icons) */ + /* Hero typography with fluid sizing */ .sr-only { @@ -1444,6 +1618,10 @@ button, margin-bottom: 2rem; } +.ml-2 { + margin-left: 0.5rem; +} + .mt-16 { margin-top: 4rem; } @@ -1638,12 +1816,6 @@ button, margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } -.space-y-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); -} - .space-y-6 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); @@ -1679,10 +1851,6 @@ button, border-width: 1px; } -.border-2 { - border-width: 2px; -} - .border-4 { border-width: 4px; } @@ -1744,10 +1912,6 @@ button, padding: 1rem; } -.p-5 { - padding: 1.25rem; -} - .p-6 { padding: 1.5rem; } @@ -1772,11 +1936,6 @@ button, padding-right: 1.5rem; } -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - .py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; @@ -2312,11 +2471,6 @@ article.border.border-border\/30.rounded-lg.overflow-hidden.group.bg-bg { opacity: 0.5; } -.group\/cta:hover .group-hover\/cta\:translate-x-1 { - --tw-translate-x: 0.25rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - .group:hover .group-hover\:scale-105 { --tw-scale-x: 1.05; --tw-scale-y: 1.05; @@ -2374,10 +2528,6 @@ article.border.border-border\/30.rounded-lg.overflow-hidden.group.bg-bg { gap: 1.5rem; } - .md\:p-6 { - padding: 1.5rem; - } - .md\:text-5xl { font-size: 3rem; line-height: 1; |
