:root { --bg-primary: #0a0a0f; --bg-surface: #12121a; --bg-surface-elevated: #1a1a2e; --bg-glass: rgba(18, 18, 26, 0.75); --bg-glass-strong: rgba(18, 18, 26, 0.92); --bg-code-card: rgba(14, 14, 24, 0.88); --hero-overlay: linear-gradient( 135deg, rgba(10, 10, 15, 0.93) 0%, rgba(10, 10, 15, 0.83) 50%, rgba(18, 18, 26, 0.91) 100% ); --accent-primary: #7c3aed; --accent-secondary: #06b6d4; --gradient-primary: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%); --gradient-animated: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary), #9333ea, var(--accent-secondary)); --gradient-subtle: linear-gradient(135deg, rgba(124, 58, 237, 0.14), rgba(6, 182, 212, 0.14)); --text-primary: #f1f5f9; --text-secondary: #94a3b8; --text-muted: #64748b; --border-color: #2a2a3e; --border-glow: rgba(124, 58, 237, 0.45); --shadow-card: 0 10px 30px -10px rgba(0, 0, 0, 0.6); --shadow-glow: 0 20px 40px -12px rgba(124, 58, 237, 0.32), 0 0 25px -5px rgba(6, 182, 212, 0.22); --shadow-nav: 0 10px 30px -10px rgba(0, 0, 0, 0.75); --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; } html.light-mode, body.light-mode { --bg-primary: #f8fafc; --bg-surface: #ffffff; --bg-surface-elevated: #f1f5f9; --bg-glass: rgba(255, 255, 255, 0.84); --bg-glass-strong: rgba(255, 255, 255, 0.96); --bg-code-card: rgba(255, 255, 255, 0.94); --hero-overlay: linear-gradient( 135deg, rgba(248, 250, 252, 0.94) 0%, rgba(241, 245, 249, 0.89) 50%, rgba(248, 250, 252, 0.93) 100% ); --accent-primary: #7c3aed; --accent-secondary: #0891b2; --gradient-primary: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 100%); --gradient-animated: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary), #6d28d9, var(--accent-secondary)); --gradient-subtle: linear-gradient(135deg, rgba(124, 58, 237, 0.10), rgba(8, 145, 178, 0.10)); --text-primary: #0f172a; --text-secondary: #475569; --text-muted: #64748b; --border-color: #e2e8f0; --border-glow: rgba(124, 58, 237, 0.4); --shadow-card: 0 10px 30px -10px rgba(15, 23, 42, 0.08); --shadow-glow: 0 20px 40px -12px rgba(124, 58, 237, 0.20), 0 0 25px -5px rgba(8, 145, 178, 0.16); --shadow-nav: 0 10px 30px -10px rgba(15, 23, 42, 0.10); } .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; } .screen-reader-text:focus { background-color: var(--bg-surface); border-radius: 0.5rem; box-shadow: 0 0 2px 2px rgba(124, 58, 237, 0.6); clip: auto !important; clip-path: none; color: var(--text-primary); display: block; font-size: 0.875rem; font-weight: 700; height: auto; left: 5px; line-height: normal; padding: 15px 23px 14px; text-decoration: none; top: 5px; width: auto; z-index: 100000; } .alignleft { float: left; margin-right: 1.5rem; margin-bottom: 1rem; } .alignright { float: right; margin-left: 1.5rem; margin-bottom: 1rem; } .aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto; margin-bottom: 1rem; } .wp-caption { max-width: 100%; margin-bottom: 1.5rem; } .wp-caption-text, .gallery-caption { font-size: 0.85rem; color: var(--text-secondary); text-align: center; margin-top: 0.5rem; } .bypostauthor { border-left: 3px solid var(--accent-primary); } .sticky { border: 1px solid var(--accent-primary); } body.admin-bar #navbar { top: 32px; } @media screen and (max-width: 782px) { body.admin-bar #navbar { top: 46px; } } *, *::before, *::after { box-sizing: border-box; } html { scroll-behavior: smooth; scroll-padding-top: 88px; font-family: var(--font-sans); background-color: var(--bg-primary); color: var(--text-primary); } body { margin: 0; padding: 0; background-color: var(--bg-primary); color: var(--text-primary); font-family: var(--font-sans); font-weight: 400; line-height: 1.65; overflow-x: hidden; transition: background-color 0.3s ease, color 0.3s ease; } section, header, footer, nav, div, article, aside, p, span, a, button, input, select, textarea, h1, h2, h3, h4, h5, h6 { transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease; } h1, h2, h3, h4, h5, h6 { font-family: var(--font-sans); font-weight: 800; letter-spacing: -0.025em; color: var(--text-primary); } code, pre, .font-mono { font-family: var(--font-mono); } .elementor-section { position: relative; width: 100%; } .elementor-container { width: 100%; max-width: 1280px; margin-left: auto; margin-right: auto; padding-left: 1.25rem; padding-right: 1.25rem; } @media (min-width: 640px) { .elementor-container { padding-left: 1.75rem; padding-right: 1.75rem; } } @media (min-width: 1024px) { .elementor-container { padding-left: 2.5rem; padding-right: 2.5rem; } } .theme-bg-primary { background-color: var(--bg-primary); } .theme-bg-surface { background-color: var(--bg-surface); } .theme-bg-elevated { background-color: var(--bg-surface-elevated); } .theme-text-primary { color: var(--text-primary); } .theme-text-secondary { color: var(--text-secondary); } .theme-border { border-color: var(--border-color); } .gradient-text { background: var(--gradient-primary); -webkit-background-clip: text; background-clip: text; color: transparent; display: inline-block; } .section-label { font-family: var(--font-mono); font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.22em; background: var(--gradient-primary); -webkit-background-clip: text; background-clip: text; color: transparent; display: inline-flex; align-items: center; gap: 0.5rem; } .section-label::before, .section-label::after { content: ''; display: inline-block; width: 24px; height: 2px; background: var(--gradient-primary); border-radius: 2px; } .glass-navbar { background: var(--bg-glass); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid var(--border-color); } .glass-navbar.navbar-scrolled { background: var(--bg-glass-strong); box-shadow: var(--shadow-nav); } .glass-card { background: var(--bg-glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid var(--border-color); box-shadow: var(--shadow-card); transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.35s ease, background-color 0.3s ease; } .hover-lift:hover { transform: translateY(-8px); border-color: var(--border-glow); box-shadow: var(--shadow-glow); } .glass-code-card { background: var(--bg-code-card); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid var(--border-color); box-shadow: var(--shadow-glow); } .gradient-border-box { position: relative; background: var(--bg-surface); border-radius: 1.25rem; padding: 2px; background-image: var(--gradient-primary); } .gradient-border-inner { background: var(--bg-surface); border-radius: calc(1.25rem - 2px); height: 100%; width: 100%; } .primary-menu-list { display: flex; align-items: center; gap: 1.5rem; list-style: none; margin: 0; padding: 0; } .primary-menu-list > li > a, .nav-link { position: relative; color: var(--text-secondary); font-weight: 500; font-size: 0.9rem; padding: 0.45rem 0.15rem; text-decoration: none; transition: color 0.25s ease; white-space: nowrap; } .primary-menu-list > li.current-menu-item > a, .primary-menu-list > li > a:hover, .nav-link:hover, .nav-link.active { color: var(--text-primary); } .primary-menu-list > li > a::after, .nav-link::after { content: ''; position: absolute; left: 0; bottom: -2px; width: 100%; height: 2.5px; background: var(--gradient-primary); border-radius: 999px; transform: scaleX(0); transform-origin: right; transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); } .primary-menu-list > li.current-menu-item > a::after, .primary-menu-list > li > a:hover::after, .nav-link:hover::after, .nav-link.active::after { transform: scaleX(1); transform-origin: left; } .mobile-drawer { transform: translateX(100%); transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1); } .mobile-drawer.open { transform: translateX(0); } .mobile-backdrop { opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .mobile-backdrop.open { opacity: 1; pointer-events: auto; } .btn-gradient { background-image: var(--gradient-animated); background-size: 250% 250%; color: #ffffff !important; font-weight: 600; border: none; animation: gradientShift 5s ease infinite; box-shadow: 0 10px 25px -5px rgba(124, 58, 237, 0.45); transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.28s ease; } .btn-gradient:hover { transform: scale(1.04) translateY(-2px); box-shadow: 0 16px 32px -6px rgba(124, 58, 237, 0.6), 0 0 20px rgba(6, 182, 212, 0.4); } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .btn-outline-gradient { position: relative; background: transparent; color: var(--text-primary); border: 1.5px solid var(--border-color); font-weight: 600; overflow: hidden; z-index: 1; transition: color 0.3s ease, border-color 0.3s ease, transform 0.28s ease, box-shadow 0.28s ease; } .btn-outline-gradient::before { content: ''; position: absolute; inset: 0; background: var(--gradient-primary); opacity: 0; z-index: -1; transition: opacity 0.3s ease; } .btn-outline-gradient:hover { color: #ffffff !important; border-color: transparent; transform: translateY(-2px); box-shadow: 0 12px 25px -6px rgba(6, 182, 212, 0.38); } .btn-outline-gradient:hover::before { opacity: 1; } .filter-btn { padding: 0.55rem 1.2rem; border-radius: 0.75rem; font-size: 0.85rem; font-weight: 600; background: var(--bg-surface); color: var(--text-secondary); border: 1px solid var(--border-color); cursor: pointer; transition: all 0.28s ease; } .filter-btn:hover { color: var(--text-primary); border-color: var(--accent-primary); } .filter-btn.active { background: var(--gradient-primary); color: #ffffff; border-color: transparent; box-shadow: 0 8px 20px -4px rgba(124, 58, 237, 0.45); } .social-icon-btn { width: 44px; height: 44px; border-radius: 0.75rem; display: inline-flex; align-items: center; justify-content: center; background: var(--bg-surface); border: 1px solid var(--border-color); color: var(--text-secondary); font-size: 1.1rem; transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); } .social-icon-btn:hover { color: #ffffff; background: var(--gradient-primary); border-color: transparent; transform: translateY(-4px); box-shadow: 0 10px 22px -4px rgba(124, 58, 237, 0.55); } .hero-bg-wrapper { background-image: url('../images/hero-bg.jpg'); background-size: cover; background-position: center; background-repeat: no-repeat; } .hero-bg-overlay { background: var(--hero-overlay); } .typing-cursor { display: inline-block; width: 3px; height: 1.15em; background: var(--accent-secondary); margin-left: 4px; vertical-align: middle; animation: blinkCursor 0.85s step-end infinite; } @keyframes blinkCursor { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .float-slow { animation: floatSlow 6s ease-in-out infinite; } .float-medium { animation: floatReverse 5s ease-in-out infinite; } @keyframes floatSlow { 0%, 100% { transform: translateY(0px) rotate(0deg); } 50% { transform: translateY(-14px) rotate(1deg); } } @keyframes floatReverse { 0%, 100% { transform: translateY(0px) translateX(0px); } 50% { transform: translateY(12px) translateX(-6px); } } .orb-glow { filter: blur(65px); pointer-events: none; z-index: 0; } .skill-tag { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.35rem 0.75rem; border-radius: 0.5rem; font-size: 0.8125rem; font-weight: 500; background: var(--bg-surface-elevated); color: var(--text-primary); border: 1px solid var(--border-color); transition: all 0.25s ease; } .skill-tag:hover { background: var(--gradient-primary); color: #ffffff; border-color: transparent; transform: translateY(-2px); } .skill-bar-track { width: 100%; height: 6px; background: var(--bg-surface-elevated); border-radius: 999px; overflow: hidden; position: relative; } .skill-bar-fill { height: 100%; width: 0%; background: var(--gradient-primary); border-radius: 999px; transition: width 1.35s cubic-bezier(0.22, 1, 0.36, 1); } .timeline-container { position: relative; } .timeline-line { position: absolute; top: 0; bottom: 0; left: 24px; width: 3px; background: linear-gradient( 180deg, var(--accent-primary) 0%, var(--accent-secondary) 75%, transparent 100% ); border-radius: 999px; } @media (min-width: 1024px) { .timeline-line { left: 50%; transform: translateX(-50%); } } .timeline-node { width: 50px; height: 50px; border-radius: 9999px; background: var(--gradient-primary); color: #ffffff; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; box-shadow: 0 0 0 6px var(--bg-primary), 0 0 25px rgba(124, 58, 237, 0.65); z-index: 10; } .project-card, .blog-card { position: relative; border-radius: 1.25rem; background: var(--bg-surface); border: 1px solid var(--border-color); overflow: hidden; transition: transform 0.38s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.38s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.38s ease; } .project-card::before, .blog-card::before { content: ''; position: absolute; inset: 0; border-radius: 1.25rem; padding: 2px; background: var(--gradient-primary); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; pointer-events: none; transition: opacity 0.35s ease; z-index: 20; } .project-card:hover, .blog-card:hover { transform: translateY(-8px); box-shadow: var(--shadow-glow); border-color: transparent; } .project-card:hover::before, .blog-card:hover::before { opacity: 1; } .project-img-wrapper { overflow: hidden; position: relative; } .project-img { width: 100%; height: 245px; object-fit: cover; object-position: top center; transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); } .project-card:hover .project-img, .blog-card:hover .project-img { transform: scale(1.07); } .form-input { width: 100%; background: var(--bg-surface-elevated); border: 1.5px solid var(--border-color); color: var(--text-primary); border-radius: 0.875rem; padding: 0.875rem 1.125rem; font-size: 0.95rem; font-family: var(--font-sans); outline: none; transition: border-color 0.25s ease, box-shadow 0.25s ease, background-color 0.3s ease; } .form-input:focus { border-color: var(--accent-primary); box-shadow: 0 0 0 4px rgba(124, 58, 237, 0.16); } .form-input.input-error { border-color: #ef4444; } .form-input.input-valid { border-color: #10b981; } .error-msg { color: #f87171; font-size: 0.8rem; margin-top: 0.35rem; display: none; } .error-msg.visible { display: flex; align-items: center; gap: 0.35rem; } .faq-content { max-height: 0; overflow: hidden; transition: max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1); } .faq-item.open .faq-content { max-height: 360px; } .faq-item.open .faq-icon { transform: rotate(180deg); } .back-to-top { position: fixed; bottom: 1.75rem; right: 1.75rem; width: 48px; height: 48px; border-radius: 9999px; background: var(--gradient-primary); color: #ffffff; display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 25px rgba(124, 58, 237, 0.5); opacity: 0; visibility: hidden; transform: translateY(16px); transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1); z-index: 40; border: none; cursor: pointer; } .back-to-top.show { opacity: 1; visibility: visible; transform: translateY(0); } .modal-overlay { opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .modal-overlay.active { opacity: 1; visibility: visible; } .modal-card { transform: scale(0.95) translateY(12px); transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1); } .modal-overlay.active .modal-card { transform: scale(1) translateY(0); }