first commit

This commit is contained in:
2026-05-29 10:23:25 +03:00
commit e4b25fe4b7
48 changed files with 9112 additions and 0 deletions

139
client/src/index.css Normal file
View File

@@ -0,0 +1,139 @@
@import "tailwindcss";
@plugin "tailwindcss-animate";
:root {
--background: #ffffff;
--foreground: #0a0a0a;
--card: #ffffff;
--card-foreground: #0a0a0a;
--popover: #ffffff;
--popover-foreground: #0a0a0a;
--primary: #0a0a0a;
--primary-foreground: #ffffff;
--secondary: #f5f5f5;
--secondary-foreground: #0a0a0a;
--muted: #f7f7f7;
--muted-foreground: #8a8a8a;
--accent: #f0f0f0;
--accent-foreground: #0a0a0a;
--destructive: #e00;
--destructive-foreground: #fff;
--border: #e8e8e8;
--input: #e8e8e8;
--ring: #0a0a0a;
--radius: 0;
--accent-coral: #ff6b35;
--accent-coral-light: #fff4f0;
}
* {
border-color: var(--border);
}
body {
background-color: var(--background);
color: var(--foreground);
font-family: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", Roboto, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Heart animation */
@keyframes heart-pop {
0% { transform: scale(1); }
25% { transform: scale(1.25); }
50% { transform: scale(0.9); }
75% { transform: scale(1.1); }
100% { transform: scale(1); }
}
.heart-animate {
animation: heart-pop 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
/* Double tap heart burst */
@keyframes heart-burst {
0% { transform: scale(0) rotate(-15deg); opacity: 1; }
60% { transform: scale(1.3) rotate(5deg); opacity: 0.8; }
100% { transform: scale(1.8) rotate(0deg); opacity: 0; }
}
.heart-burst {
animation: heart-burst 0.6s ease-out forwards;
}
/* Fade in */
@keyframes fade-in {
from { opacity: 0; transform: translateY(6px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in {
animation: fade-in 0.3s ease-out;
}
/* Scale in */
@keyframes scale-in {
from { opacity: 0; transform: scale(0.97); }
to { opacity: 1; transform: scale(1); }
}
.animate-scale-in {
animation: scale-in 0.2s ease-out;
}
/* Slide up for toasts */
@keyframes slide-up {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-slide-up {
animation: slide-up 0.25s ease-out;
}
/* Skeleton shimmer */
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
.skeleton-shimmer {
background: linear-gradient(90deg, #f0f0f0 25%, #fafafa 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: shimmer 1.2s ease-in-out infinite;
}
/* Page transition */
.page-enter {
opacity: 0;
}
.page-enter-active {
opacity: 1;
transition: opacity 0.15s ease-out;
}
/* Like button press */
.like-btn {
transition: transform 0.1s;
}
.like-btn:active {
transform: scale(0.8);
}
/* Hide scrollbar for stories */
.scrollbar-none::-webkit-scrollbar {
display: none;
}
.scrollbar-none {
-ms-overflow-style: none;
scrollbar-width: none;
}
/* Terax-style divider */
.divider-clean {
height: 1px;
background: #e8e8e8;
margin: 24px 0;
}