Files
Portfolio/src/index.css
T
damjan_savicandClaude Opus 4.6 62ae5140b9 Tailwind v4 migration, massive SEO optimization, and fixes
- Migrate to Tailwind CSS v4 with @theme, @layer, @plugin syntax
- Upgrade to Next.js 16.1, React 19.2, TypeScript 5.9.3
- Add 8 technology landing pages (Next.js, React, TypeScript, Tailwind CSS, Claude AI, Python, n8n, KI-Agenten)
- Expand SEO keywords across all locales (de/en/sr) for home, layout, cities, services
- Add tech-specific keywords to all 22 city pages
- Add FAQ schema + seoKeywords to service detail pages
- Add CollectionPage JSON-LD to blog listing
- Fix city page: dynamic region, BASE_URL canonicals, x-default hreflang
- Rewrite terms page with full German AGB, English and Serbian translations
- Remove dead crypto import and unused CSRF middleware (Edge Runtime fix)
- Remove crawlDelay from robots.ts
- Update sitemap with technology pages (~198 indexed URLs)
- Remove deprecated tailwind.config.js

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 20:40:19 +01:00

166 lines
2.6 KiB
CSS

@import "tailwindcss";
@plugin "tailwindcss-animate";
@plugin "@tailwindcss/forms" {
strategy: class;
}
/* Font loading states */
html.fonts-loading body {
opacity: 0;
transition: opacity 0.2s ease-in-out;
}
html.fonts-loaded body,
html.fonts-fallback body {
opacity: 1;
}
@layer base {
:root {
font-family: Inter, system-ui, sans-serif;
}
html {
background-color: transparent !important;
}
body {
@apply text-foreground antialiased;
background-color: transparent !important;
}
#root {
background-color: transparent !important;
}
h1, h2, h3, h4, h5, h6 {
@apply font-sans font-bold tracking-tight;
}
}
@layer components {
.container {
@apply px-4 mx-auto max-w-7xl sm:px-6 lg:px-8;
}
.transition-standard {
@apply transition-all duration-300 ease-in-out;
}
.animate-float {
animation: float 6s ease-in-out infinite;
}
.animate-pulse-slow {
animation: pulse 4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
}
@layer utilities {
.text-gradient {
@apply bg-clip-text text-transparent bg-gradient-to-r from-primary via-accent to-secondary;
}
/* GPU acceleration utilities - simplified */
.gpu-accelerated {
transform: translateZ(0);
-webkit-transform: translateZ(0);
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
}
@keyframes float {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-20px);
}
}
@keyframes pulse {
0%, 100% {
opacity: 0.1;
}
50% {
opacity: 0.3;
}
}
@keyframes slide-right {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
@keyframes slide-down {
0% {
transform: translateY(-100%);
}
100% {
transform: translateY(100%);
}
}
.animate-slide-right {
animation: slide-right 8s linear infinite;
}
.animate-slide-down {
animation: slide-down 8s linear infinite;
}
/* Prevent hover flickering */
* {
-webkit-tap-highlight-color: transparent;
}
a, button {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);
}
/* Scrollbar Styling */
@media (pointer: fine) {
::-webkit-scrollbar {
@apply w-2;
}
::-webkit-scrollbar-track {
@apply bg-muted;
}
::-webkit-scrollbar-thumb {
@apply bg-accent rounded-full hover:bg-accent-foreground transition-colors;
}
}
/* Improved Mobile Experience */
@media (max-width: 640px) {
h1 {
@apply text-3xl;
}
h2 {
@apply text-2xl;
}
.prose {
@apply text-base space-y-6;
}
.prose p {
@apply leading-relaxed;
}
button,
a {
@apply min-h-[44px] min-w-[44px];
}
}