/* Reset & Base */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --color-bg: #fafafa; --color-surface: #ffffff; --color-text: #1a1a1a; --color-text-muted: #666666; --color-primary: #2563eb; --color-primary-hover: #1d4ed8; --color-border: #e5e5e5; --color-accent: #f0f4ff; --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; --container-width: 1100px; --spacing-xs: 0.5rem; --spacing-sm: 1rem; --spacing-md: 1.5rem; --spacing-lg: 2rem; --spacing-xl: 3rem; --spacing-xxl: 5rem; --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06); --transition: 150ms ease; } html { scroll-behavior: smooth; } body { font-family: var(--font-family); font-size: 16px; line-height: 1.6; color: var(--color-text); background-color: var(--color-bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .container { width: 100%; max-width: var(--container-width); margin: 0 auto; padding: 0 var(--spacing-md); } /* Typography */ h1, h2, h3, h4 { font-weight: 600; line-height: 1.3; } h1 { font-size: 3rem; } h2 { font-size: 2rem; } h3 { font-size: 1.25rem; } p { margin-bottom: var(--spacing-sm); } a { color: var(--color-primary); text-decoration: none; transition: color var(--transition); } a:hover { color: var(--color-primary-hover); } /* Navigation */ .nav { position: fixed; top: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border-bottom: 1px solid var(--color-border); z-index: 100; } .nav-container { display: flex; justify-content: space-between; align-items: center; max-width: var(--container-width); margin: 0 auto; padding: var(--spacing-sm) var(--spacing-md); } .nav-logo { font-size: 1.25rem; font-weight: 700; color: var(--color-text); } .nav-logo:hover { color: var(--color-primary); } .nav-links { display: flex; list-style: none; gap: var(--spacing-lg); } .nav-links a { color: var(--color-text-muted); font-size: 0.9rem; font-weight: 500; transition: color var(--transition); } .nav-links a:hover { color: var(--color-text); } /* Buttons */ .btn { display: inline-block; padding: 0.75rem 1.5rem; font-size: 0.9rem; font-weight: 500; border-radius: var(--radius-md); cursor: pointer; transition: all var(--transition); border: none; text-align: center; } .btn-primary { background: var(--color-primary); color: white; } .btn-primary:hover { background: var(--color-primary-hover); color: white; } .btn-secondary { background: transparent; color: var(--color-text); border: 1px solid var(--color-border); } .btn-secondary:hover { border-color: var(--color-text); color: var(--color-text); } /* Hero */ .hero { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: var(--spacing-xxl) var(--spacing-md); text-align: center; background: linear-gradient(180deg, var(--color-accent) 0%, var(--color-bg) 100%); } .hero-content { max-width: 700px; } .hero h1 { margin-bottom: var(--spacing-xs); } .hero-subtitle { font-size: 1.25rem; color: var(--color-primary); font-weight: 500; margin-bottom: var(--spacing-md); } .hero-description { font-size: 1.1rem; color: var(--color-text-muted); margin-bottom: var(--spacing-lg); } .hero-cta { display: flex; gap: var(--spacing-sm); justify-content: center; flex-wrap: wrap; } /* Sections */ .section { padding: var(--spacing-xxl) 0; } .section-title { margin-bottom: var(--spacing-xl); text-align: center; position: relative; } .section-title::after { content: ''; display: block; width: 50px; height: 3px; background: var(--color-primary); margin: var(--spacing-sm) auto 0; border-radius: 2px; } /* About */ .about { background: var(--color-surface); } .about-content { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-xl); align-items: start; } .about-text p { color: var(--color-text-muted); margin-bottom: var(--spacing-md); } .about-text strong { color: var(--color-text); } .about-skills h3 { margin-bottom: var(--spacing-md); } .skills-grid { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); } .skill-tag { display: inline-block; padding: 0.4rem 0.8rem; background: var(--color-accent); color: var(--color-primary); font-size: 0.85rem; font-weight: 500; border-radius: var(--radius-sm); } /* Projects */ .projects-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--spacing-lg); } .project-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--spacing-lg); transition: box-shadow var(--transition), transform var(--transition); } .project-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); } .project-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs); } .project-header h3 { margin: 0; } .project-status { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; color: #16a34a; background: #dcfce7; padding: 0.25rem 0.5rem; border-radius: var(--radius-sm); } .project-date { font-size: 0.8rem; color: var(--color-text-muted); } .project-role { font-size: 0.9rem; color: var(--color-primary); font-weight: 500; margin-bottom: var(--spacing-sm); } .project-description { color: var(--color-text-muted); font-size: 0.95rem; margin-bottom: var(--spacing-md); } .project-tags { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); } .project-tags span { font-size: 0.75rem; padding: 0.25rem 0.5rem; background: var(--color-bg); color: var(--color-text-muted); border-radius: var(--radius-sm); } /* Contact */ .contact { background: var(--color-surface); } .contact-content { display: grid; grid-template-columns: 1fr 1.5fr; gap: var(--spacing-xl); align-items: start; } .contact-info p { color: var(--color-text-muted); margin-bottom: var(--spacing-lg); } .social-links { display: flex; gap: var(--spacing-sm); } .social-link { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--radius-md); background: var(--color-bg); color: var(--color-text-muted); transition: all var(--transition); } .social-link:hover { background: var(--color-primary); color: white; } .contact-form { display: flex; flex-direction: column; gap: var(--spacing-md); } .form-group { display: flex; flex-direction: column; gap: var(--spacing-xs); } .form-group label { font-size: 0.9rem; font-weight: 500; } .form-group input, .form-group textarea { padding: 0.75rem 1rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); font-family: inherit; font-size: 1rem; transition: border-color var(--transition), box-shadow var(--transition); } .form-group input:focus, .form-group textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .form-group textarea { resize: vertical; min-height: 120px; } /* Footer */ .footer { padding: var(--spacing-lg) 0; text-align: center; border-top: 1px solid var(--color-border); } .footer p { color: var(--color-text-muted); font-size: 0.9rem; margin: 0; } /* Responsive */ @media (max-width: 768px) { h1 { font-size: 2.25rem; } h2 { font-size: 1.75rem; } .nav-links { gap: var(--spacing-md); } .about-content, .contact-content { grid-template-columns: 1fr; } .projects-grid { grid-template-columns: 1fr; } .hero { padding-top: calc(var(--spacing-xxl) + 60px); } } @media (max-width: 480px) { h1 { font-size: 1.875rem; } .nav-links { gap: var(--spacing-sm); } .nav-links a { font-size: 0.8rem; } .hero-cta { flex-direction: column; } .hero-cta .btn { width: 100%; } }