@import "tailwindcss"; @theme inline { --color-bg: #07080a; --color-surface: #0e1014; --color-border: #1c1f26; --color-border-dim: #141619; --color-text: #e2e4e9; --color-muted: #4a5060; --color-accent: #c8a96e; --color-accent-bright: #e8c887; --color-accent-dim: #6b5730; --color-tag-bg: #131720; --color-done: #3a7a5a; --color-progress: #6b5730; } * { box-sizing: border-box; } /* All page sections sit above the fixed GridCanvas (z-index 0) */ main > section { position: relative; z-index: 5; } html { scroll-behavior: smooth; background: #07080a; } body { background: #07080a; color: #e2e4e9; font-family: var(--font-lora), Georgia, serif; overflow-x: hidden; } body::before { content: ""; position: fixed; inset: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E"); pointer-events: none; z-index: 1; opacity: 0.35; } ::-webkit-scrollbar { width: 4px; } ::-webkit-scrollbar-track { background: #07080a; } ::-webkit-scrollbar-thumb { background: #1c1f26; border-radius: 2px; } @keyframes fadeUp { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideRight { from { transform: scaleX(0); } to { transform: scaleX(1); } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 0 0 rgba(200, 169, 110, 0); } 50% { box-shadow: 0 0 20px 4px rgba(200, 169, 110, 0.12); } } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } @keyframes scroll-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(6px); } } .animate-fade-up { animation: fadeUp 0.75s ease both; } .delay-1 { animation-delay: 0.15s; } .delay-2 { animation-delay: 0.3s; } .delay-3 { animation-delay: 0.45s; } .delay-4 { animation-delay: 0.6s; } .delay-5 { animation-delay: 0.75s; } .delay-6 { animation-delay: 0.9s; } .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s ease, transform 0.7s ease; } .reveal.visible { opacity: 1; transform: translateY(0); } /* grid-bg: static CSS grid removed — replaced by GridCanvas (canvas-based distortion) */ .grid-bg {} .project-card { background: #0e1014; border: 1px solid #1c1f26; transition: border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease; position: relative; overflow: hidden; } .project-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(200,169,110,0.05) 0%, transparent 60%); opacity: 0; transition: opacity 0.3s ease; pointer-events: none; } .project-card:hover { border-color: #6b5730; transform: translateY(-3px); box-shadow: 0 16px 48px rgba(0,0,0,0.5); } .project-card:hover::before { opacity: 1; } .tech-tag { font-family: var(--font-jetbrains), monospace; font-size: 0.62rem; letter-spacing: 0.08em; padding: 2px 8px; border: 1px solid #1c1f26; color: #4a5060; background: #131720; display: inline-block; transition: border-color 0.2s, color 0.2s; } .tech-tag:hover { border-color: #6b5730; color: #c8a96e; } .nav-link { font-family: var(--font-jetbrains), monospace; font-size: 0.7rem; letter-spacing: 0.14em; text-transform: uppercase; color: #4a5060; transition: color 0.2s; position: relative; } .nav-link::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 1px; background: #c8a96e; transition: width 0.25s ease; } .nav-link:hover { color: #c8a96e; } .nav-link:hover::after { width: 100%; } .status-done { font-family: var(--font-jetbrains), monospace; font-size: 0.58rem; letter-spacing: 0.1em; padding: 1px 6px; border: 1px solid #3a7a5a; color: #3a7a5a; text-transform: uppercase; } .status-progress { font-family: var(--font-jetbrains), monospace; font-size: 0.58rem; letter-spacing: 0.1em; padding: 1px 6px; border: 1px solid #6b5730; color: #c8954a; text-transform: uppercase; } .section-label { font-family: var(--font-jetbrains), monospace; font-size: 0.62rem; letter-spacing: 0.22em; text-transform: uppercase; color: #c8a96e; } .cursor::after { content: '_'; animation: blink 1s step-end infinite; color: #c8a96e; } .scroll-indicator { animation: scroll-bounce 1.8s ease-in-out infinite; } .accent-bar { display: block; width: 32px; height: 2px; background: #c8a96e; transform-origin: left; } /* ── Responsive bento grid ───────────────────────────────────── */ .hero-bento-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: #1c1f26; border: 1px solid #1c1f26; } @media (max-width: 1023px) { .hero-bento-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 599px) { .hero-bento-grid { grid-template-columns: 1fr; } } /* ── Hero header responsive ──────────────────────────────────── */ .hero-header-strip { display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 1.5rem; margin-bottom: 2.5rem; } @media (max-width: 599px) { .hero-header-strip { flex-direction: column; align-items: flex-start; } } /* ── Hero section padding ────────────────────────────────────── */ .hero-section { padding-top: 88px; padding-bottom: 4rem; padding-left: 2rem; padding-right: 2rem; } @media (max-width: 599px) { .hero-section { padding-top: 76px; padding-left: 1.25rem; padding-right: 1.25rem; } } /* ── Headline cursor blink ───────────────────────────────────── */ @keyframes cursor-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .headline-cursor { display: inline-block; width: 3px; background: #c8a96e; margin-left: 4px; animation: cursor-blink 1.1s step-end infinite; vertical-align: baseline; }