:root{--bg-primary: #ffffff;--bg-secondary: #f7f7f5;--bg-tertiary: #eeeee9;--text-primary: #111111;--text-secondary: #4a4a4a;--text-tertiary: #7a7a7a;--text-muted: #a0a0a0;--accent: #1a56db;--accent-hover: #1347b8;--accent-light: #ebf0ff;--border: #e4e4e0;--border-light: #f0f0ec;--card-bg: #ffffff;--card-shadow: 0 1px 3px rgba(0,0,0,.04), 0 6px 16px rgba(0,0,0,.04);--card-shadow-hover: 0 4px 12px rgba(0,0,0,.06), 0 12px 32px rgba(0,0,0,.06);--nav-height: 72px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--transition-fast: .15s cubic-bezier(.25, .1, .25, 1);--transition-base: .3s cubic-bezier(.25, .1, .25, 1);--transition-slow: .5s cubic-bezier(.25, .1, .25, 1)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:var(--nav-height)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--text-primary);background-color:var(--bg-primary);line-height:1.6;font-size:16px;overflow-x:hidden}img{display:block;max-width:100%;height:auto}a{text-decoration:none;color:inherit}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}.section-header{margin-bottom:56px}.section-label{display:inline-block;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:16px}.section-title{font-family:Sora,sans-serif;font-size:clamp(32px,5vw,48px);font-weight:700;line-height:1.15;color:var(--text-primary);letter-spacing:-.02em}.section-subtitle{margin-top:16px;font-size:17px;color:var(--text-secondary);max-width:480px;line-height:1.6}.nav{position:fixed;top:0;left:0;right:0;height:var(--nav-height);z-index:1000;transition:background var(--transition-base),box-shadow var(--transition-base),backdrop-filter var(--transition-base)}.nav.scrolled{background:#ffffffd9;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);box-shadow:0 1px 0 var(--border)}.nav-inner{max-width:1200px;margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;justify-content:space-between}.nav-logo{display:flex;align-items:center;gap:10px;font-weight:600;font-size:18px}.nav-logo-mark{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:var(--text-primary);color:#fff;font-family:Sora,sans-serif;font-weight:700;font-size:13px;letter-spacing:.02em}.nav-logo-text{font-family:Sora,sans-serif;letter-spacing:-.01em}.nav-logo-dot{color:var(--accent)}.nav-links{display:flex;align-items:center;gap:32px}.nav-link{font-size:14px;font-weight:500;color:var(--text-secondary);transition:color var(--transition-fast);position:relative}.nav-link:hover{color:var(--text-primary)}.nav-link:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:1.5px;background:var(--text-primary);transition:width var(--transition-base)}.nav-link:hover:after{width:100%}.nav-cta{font-size:14px;font-weight:500;color:var(--accent);padding:8px 18px;border:1.5px solid var(--accent);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.nav-cta:hover{background:var(--accent);color:#fff}.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px}.nav-toggle span{display:block;width:22px;height:2px;background:var(--text-primary);border-radius:2px;transition:all var(--transition-fast)}.nav-toggle.active span:nth-child(1){transform:rotate(45deg) translateY(5px) translate(4px)}.nav-toggle.active span:nth-child(2){opacity:0}.nav-toggle.active span:nth-child(3){transform:rotate(-45deg) translateY(-5px) translate(4px)}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-top:calc(var(--nav-height) + 24px);padding-bottom:48px;position:relative;background:var(--bg-primary)}.hero-content{max-width:1200px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1fr .85fr;gap:64px;align-items:center}.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 14px 6px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:100px;font-size:13px;font-weight:500;color:#166534;margin-bottom:28px}.hero-badge-dot{width:7px;height:7px;background:#22c55e;border-radius:50%;animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}.hero-title{font-family:Sora,sans-serif;font-size:clamp(40px,5.5vw,64px);font-weight:700;line-height:1.08;letter-spacing:-.03em;color:var(--text-primary);margin-bottom:16px}.hero-title-accent{background:linear-gradient(135deg,var(--accent) 0%,#3b7dd8 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle{font-size:20px;font-weight:500;color:var(--text-secondary);margin-bottom:20px;letter-spacing:-.01em}.hero-description{font-size:16px;color:var(--text-tertiary);line-height:1.7;max-width:520px;margin-bottom:32px}.hero-actions{display:flex;gap:14px;margin-bottom:48px}.btn{display:inline-flex;align-items:center;gap:10px;padding:12px 24px;border-radius:var(--radius-sm);font-size:14px;font-weight:600;transition:all var(--transition-fast);cursor:pointer;border:none}.btn-primary{background:var(--text-primary);color:#fff}.btn-primary:hover{background:#2a2a2a;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.btn-secondary{background:var(--bg-primary);color:var(--text-primary);border:1.5px solid var(--border)}.btn-secondary:hover{border-color:var(--text-primary);transform:translateY(-1px)}.hero-stats{display:flex;align-items:center;gap:28px}.hero-stat-value{display:block;font-family:Sora,sans-serif;font-size:28px;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.hero-stat-label{display:block;font-size:13px;color:var(--text-muted);margin-top:2px}.hero-stat-divider{width:1px;height:40px;background:var(--border)}.hero-visual{display:flex;justify-content:center;align-items:center}.hero-photo-wrapper{position:relative;width:380px;height:460px}.hero-photo-frame{width:100%;height:100%;border-radius:var(--radius-xl);overflow:hidden;position:relative;z-index:1;box-shadow:0 8px 32px #0000001a}.hero-photo{width:100%;height:100%;object-fit:cover;object-position:center top}.hero-photo-decoration{position:absolute;border-radius:var(--radius-xl);z-index:0}.hero-photo-decoration-1{top:-6px;right:-6px;bottom:-6px;left:-6px;border:2px solid var(--border);transform:rotate(3deg)}.hero-photo-decoration-2{top:16px;right:-16px;bottom:-16px;left:16px;background:var(--bg-secondary);z-index:-1}.hero-scroll-indicator{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:auto;padding-top:32px}.hero-scroll-indicator span{font-size:12px;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.hero-scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--border),transparent);animation:scroll-line 2s ease-in-out infinite}@keyframes scroll-line{0%{transform:scaleY(0);transform-origin:top;opacity:0}30%{transform:scaleY(1);transform-origin:top;opacity:1}70%{transform:scaleY(1);transform-origin:bottom;opacity:1}to{transform:scaleY(0);transform-origin:bottom;opacity:0}}.about{padding:120px 0;background:var(--bg-secondary)}.about-content{display:grid;grid-template-columns:1.2fr .8fr;gap:64px;align-items:start}.about-lead{font-size:20px;color:var(--text-primary);line-height:1.6;font-weight:400;margin-bottom:20px;letter-spacing:-.01em}.about-text{font-size:15px;color:var(--text-secondary);line-height:1.75;margin-bottom:16px}.about-sidebar{display:flex;flex-direction:column;gap:20px}.about-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;transition:box-shadow var(--transition-base)}.about-card:hover{box-shadow:var(--card-shadow)}.about-card-icon{width:44px;height:44px;border-radius:var(--radius-md);background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.about-card-title{font-family:Sora,sans-serif;font-size:17px;font-weight:600;margin-bottom:4px}.about-card-subtitle{font-size:14px;color:var(--text-secondary);margin-bottom:8px}.about-card-detail{font-size:13px;color:var(--text-tertiary);line-height:1.7}.projects{padding:120px 0;background:var(--bg-primary)}.project-card{margin-bottom:48px}.project-card:last-child{margin-bottom:0}.project-card-inner{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;background:var(--bg-secondary);border-radius:var(--radius-xl);padding:32px;border:1px solid var(--border-light);transition:box-shadow var(--transition-base),transform var(--transition-base)}.project-card-inner:hover{box-shadow:var(--card-shadow-hover);transform:translateY(-2px)}.project-card-reverse .project-card-inner{grid-template-columns:.85fr 1.15fr}.project-card-reverse .project-card-visual{order:2}.project-card-reverse .project-card-content{order:1}.project-screenshot-wrapper{border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 2px 8px #0000000f,0 8px 24px #0000000f;transition:transform var(--transition-base)}.project-card-inner:hover .project-screenshot-wrapper{transform:scale(1.01)}.project-screenshot{width:100%;height:auto;display:block}.project-card-header{display:flex;align-items:center;gap:14px;margin-bottom:16px}.project-logo{width:44px;height:44px;border-radius:var(--radius-md);object-fit:contain;background:#fff;padding:4px;box-shadow:0 1px 4px #00000014}.project-title{font-family:Sora,sans-serif;font-size:22px;font-weight:600;letter-spacing:-.01em}.project-category{font-size:13px;color:var(--text-tertiary);font-weight:500}.project-description{font-size:14.5px;color:var(--text-secondary);line-height:1.7;margin-bottom:18px}.project-features{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}.project-feature{display:inline-flex;align-items:center;padding:4px 11px;background:var(--bg-primary);border:1px solid var(--border);border-radius:100px;font-size:12px;font-weight:500;color:var(--text-secondary)}.project-tech{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.tech-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:4px;font-size:12px;font-weight:600;letter-spacing:.01em}.tech-php{background:#f0eaff;color:#6c3ea3}.tech-laravel{background:#fff1f0;color:#cc3a2a}.tech-mysql{background:#e8f4fd;color:#1a6ca1}.tech-bootstrap{background:#f0eaff;color:#6c3ea3}.tech-js{background:#fef9e7;color:#8a7300}.tech-react{background:#e8f7fd;color:#0891b2}.tech-ts{background:#eef2ff;color:#3730a3}.tech-node{background:#ecfdf5;color:#166534}.tech-express{background:#f5f5f5;color:#333}.tech-postgres{background:#eef2ff;color:#3b3ea3}.tech-prisma{background:#f1f0f5;color:#2d2b55}.tech-django{background:#ecfdf5;color:#0d4f3c}.tech-docker{background:#e8f4fd;color:#1566a0}.tech-tailwind{background:#e8f7fd;color:#0e7490}.tech-dify{background:#e8ecf4;color:#1e3a5f}.tech-n8n{background:#fde8ef;color:#a3234a}.tech-minimax{background:#eeebff;color:#4a3ea3}.tech-mattermost{background:#e8f0fd;color:#0058cc}.project-link{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text-primary);padding:10px 0;transition:all var(--transition-fast)}.project-link:hover{color:var(--accent);gap:12px}.project-link svg:last-child{transition:transform var(--transition-fast)}.project-link:hover svg:last-child{transform:translate(2px,-2px)}.skills{padding:120px 0;background:var(--bg-secondary)}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.skill-group{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;transition:box-shadow var(--transition-base),transform var(--transition-base)}.skill-group:hover{box-shadow:var(--card-shadow);transform:translateY(-2px)}.skill-group-icon{width:48px;height:48px;border-radius:var(--radius-md);background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:20px}.skill-group-title{font-family:Sora,sans-serif;font-size:18px;font-weight:600;margin-bottom:16px;letter-spacing:-.01em}.skill-tags{display:flex;flex-wrap:wrap;gap:8px}.skill-tag{display:inline-flex;align-items:center;padding:6px 14px;background:var(--bg-secondary);border-radius:var(--radius-sm);font-size:13px;font-weight:500;color:var(--text-secondary);transition:all var(--transition-fast)}.skill-tag:hover{background:var(--accent-light);color:var(--accent)}.contact{padding:120px 0;background:var(--bg-primary)}.contact-inner{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}.contact-title{font-family:Sora,sans-serif;font-size:clamp(32px,4vw,44px);font-weight:700;line-height:1.15;letter-spacing:-.02em;margin-top:16px;margin-bottom:20px}.contact-title-accent{color:var(--accent)}.contact-description{font-size:15px;color:var(--text-secondary);line-height:1.7;max-width:420px}.contact-links{display:flex;flex-direction:column;gap:14px}.contact-card{display:flex;align-items:center;gap:16px;padding:20px 24px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-lg);transition:all var(--transition-base)}.contact-card:hover{background:var(--card-bg);border-color:var(--border);box-shadow:var(--card-shadow);transform:translate(4px)}.contact-card-icon{width:48px;height:48px;border-radius:var(--radius-md);background:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.contact-card:hover .contact-card-icon{background:var(--accent-light);color:var(--accent);border-color:transparent}.contact-card-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.contact-card-value{display:block;font-size:15px;font-weight:500;color:var(--text-primary)}.contact-card-arrow{margin-left:auto;color:var(--text-muted);transition:all var(--transition-fast);flex-shrink:0}.contact-card:hover .contact-card-arrow{color:var(--accent);transform:translate(2px,-2px)}.footer{padding:32px 0;background:var(--bg-primary);border-top:1px solid var(--border)}.footer-inner{display:flex;align-items:center;justify-content:space-between}.footer-text{font-size:13px;color:var(--text-muted)}.footer-links{display:flex;gap:16px}.footer-links a{color:var(--text-muted);transition:color var(--transition-fast);display:flex;align-items:center}.footer-links a:hover{color:var(--text-primary)}[data-animate]{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.25,.1,.25,1),transform .7s cubic-bezier(.25,.1,.25,1)}[data-animate=fade-left]{transform:translate(40px)}[data-animate].visible{opacity:1;transform:translate(0)}@media(max-width:1024px){.hero-content{grid-template-columns:1fr .75fr;gap:40px}.hero-photo-wrapper{width:300px;height:370px}.about-content{grid-template-columns:1fr;gap:40px}.project-card-inner{grid-template-columns:1fr;gap:28px}.project-card-reverse .project-card-inner{grid-template-columns:1fr}.project-card-reverse .project-card-visual,.project-card-reverse .project-card-content{order:0}.contact-inner{grid-template-columns:1fr;gap:40px}}@media(max-width:768px){.nav-links{display:none;position:absolute;top:var(--nav-height);left:0;right:0;background:#fffffffa;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);flex-direction:column;align-items:stretch;padding:16px 24px 24px;gap:0;border-bottom:1px solid var(--border);box-shadow:0 8px 24px #0000000f}.nav-links.open{display:flex}.nav-link{padding:14px 0;font-size:16px;border-bottom:1px solid var(--border-light)}.nav-link:after{display:none}.nav-cta{text-align:center;margin-top:12px;padding:12px 18px}.nav-toggle{display:flex}.hero{min-height:auto;padding-top:calc(var(--nav-height) + 48px);padding-bottom:64px}.hero-content{grid-template-columns:1fr;gap:48px;text-align:center}.hero-badge{margin:0 auto 28px}.hero-description{margin:0 auto 32px}.hero-actions{justify-content:center;flex-wrap:wrap}.hero-stats{justify-content:center}.hero-visual{order:-1}.hero-photo-wrapper{width:260px;height:320px;margin:0 auto}.hero-scroll-indicator{display:none}.about,.projects,.skills,.contact{padding:80px 0}.section-header{margin-bottom:40px}.skills-grid{grid-template-columns:1fr}.project-card-inner{padding:20px}.footer-inner{flex-direction:column;gap:16px;text-align:center}}@media(max-width:480px){.hero-title{font-size:36px}.hero-stats{flex-direction:column;gap:16px}.hero-stat-divider{width:40px;height:1px}.hero-actions{flex-direction:column;align-items:center}.btn{width:100%;justify-content:center}.project-title{font-size:18px}}
