:root{--bg-body:#fbf9f6;--bg-alt:#f5f2ed;--bg-card:#fff;--bg-nav:#fbf9f6e0;--text-primary:#2d2a26;--text-secondary:#6b6560;--text-muted:#9e9890;--accent:#c45c3a;--accent-hover:#a8482e;--accent-light:#da7757;--accent-bg:#c45c3a12;--accent-bg-hover:#c45c3a1f;--border:#e8e4df;--border-light:#f0ece7;--shadow-sm:0 1px 3px #0000000a, 0 1px 2px #0000000f;--shadow-md:0 4px 16px #0000000a, 0 2px 6px #0000000f;--shadow-lg:0 8px 32px #0000000f, 0 2px 8px #0000000a;--radius:6px;--radius-md:10px;--radius-lg:16px;--font-display:"Playfair Display", "Noto Serif SC", "Source Han Serif SC", serif;--font-body:"DM Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--ease:cubic-bezier(.25, .1, .25, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--transition:.3s var(--ease)}[data-theme=dark]{--bg-body:#1a1a18;--bg-alt:#242320;--bg-card:#2d2b28;--bg-nav:#1a1a18e0;--text-primary:#e8e4df;--text-secondary:#a09a94;--text-muted:#706b66;--accent:#da7757;--accent-hover:#e89375;--accent-light:#da7757;--accent-bg:#da77571a;--accent-bg-hover:#da775729;--border:#3d3a36;--border-light:#33312d;--shadow-sm:0 1px 3px #0003, 0 1px 2px #0000004d;--shadow-md:0 4px 16px #0000004d, 0 2px 6px #0003;--shadow-lg:0 8px 32px #0006, 0 2px 8px #0003}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-body);background:var(--bg-body);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;font-weight:400;line-height:1.65;overflow-x:hidden}body:after{content:"";z-index:9999;pointer-events:none;opacity:.015;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}::selection{background:var(--accent-bg);color:var(--accent)}.navbar{z-index:1000;background:var(--bg-nav);-webkit-backdrop-filter:blur(16px)saturate(180%);border-bottom:1px solid var(--border-light);position:fixed;top:0;left:0;right:0}.nav-content{justify-content:space-between;align-items:center;max-width:1040px;height:64px;margin:0 auto;padding:0 40px;display:flex}.nav-logo{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.5px;transition:color var(--transition);font-size:22px;font-style:italic;font-weight:600;text-decoration:none}.nav-logo:hover{color:var(--accent)}.nav-links{gap:36px;display:flex}.nav-links a{color:var(--text-secondary);transition:color var(--transition);letter-spacing:.3px;font-size:15px;font-weight:500;text-decoration:none;position:relative}.nav-links a:after{content:"";background:var(--accent);transform-origin:100%;width:100%;height:1.5px;transition:transform .35s var(--ease);position:absolute;bottom:-5px;left:0;transform:scaleX(0)}.nav-links a:hover{color:var(--text-primary)}.nav-links a:hover:after{transform-origin:0;transform:scaleX(1)}.theme-toggle{border:1px solid var(--border);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition);background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.theme-toggle:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.nav-toggle{cursor:pointer;z-index:1100;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;width:28px;height:28px;padding:0;display:none}.nav-toggle span{background:var(--text-primary);width:100%;height:1.5px;transition:all .3s var(--ease);transform-origin:50%;border-radius:1px;display:block}.nav-toggle.active span:first-child{transform:translateY(3.25px)rotate(45deg)}.nav-toggle.active span:last-child{transform:translateY(-3.25px)rotate(-45deg)}.nav-mobile{background:var(--bg-body);z-index:999;opacity:0;pointer-events:none;transition:opacity .35s var(--ease);justify-content:center;align-items:flex-start;padding-top:60px;display:flex;position:fixed;inset:64px 0 0}.nav-mobile.open{opacity:1;pointer-events:auto}.nav-mobile-links{flex-direction:column;align-items:center;gap:32px;display:flex}.nav-mobile-links a{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.5px;transition:color var(--transition);font-size:28px;font-weight:600;text-decoration:none}.nav-mobile-links a:hover{color:var(--accent)}.hero{grid-template-columns:1fr 1fr;align-items:center;max-width:1120px;min-height:100vh;margin:0 auto;padding:120px 60px 80px;display:grid;position:relative;overflow:hidden}.hero:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(circle,#c45c3a0a 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:absolute;top:15%;right:5%}.hero-content{text-align:left;z-index:2;grid-column:1;position:relative}.hero-greeting{font-family:var(--font-body);color:var(--accent);letter-spacing:5px;text-transform:uppercase;margin-bottom:24px;font-size:13px;font-weight:500}.hero-name{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-2.5px;margin-bottom:20px;font-size:clamp(52px,7vw,88px);font-weight:700;line-height:1.05}.hero-title{font-family:var(--font-body);color:var(--text-secondary);letter-spacing:-.3px;margin-bottom:24px;font-size:clamp(18px,2.5vw,24px);font-weight:500}.hero-tagline{font-family:var(--font-body);color:var(--text-muted);max-width:420px;margin-bottom:48px;font-size:16px;line-height:1.75}.hero-actions{flex-wrap:wrap;gap:16px;display:flex}.btn{font-family:var(--font-body);transition:all var(--transition);cursor:pointer;letter-spacing:.3px;border:none;border-radius:50px;align-items:center;gap:8px;padding:13px 32px;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 2px 12px #c45c3a40}.btn-primary:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 20px #c45c3a4d}.btn-outline{border:1.5px solid var(--border);color:var(--text-primary);background:0 0}.btn-outline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);transform:translateY(-2px)}.hero-decoration{pointer-events:none;z-index:0;opacity:.85;grid-area:1/2;justify-content:center;align-items:center;display:flex;position:relative}.hero-rings{width:380px;height:380px;position:relative}.hero-rings:before{content:"";border:1.5px solid #d8d3cc;border-radius:50%;width:380px;height:380px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-rings:after{content:"";border:1.5px solid #c45c3a38;border-radius:50%;width:240px;height:240px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-ring-inner{background:#c45c3a12;border:1.5px solid #c45c3a61;border-radius:50%;width:110px;height:110px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-dot{background:var(--accent);opacity:.6;border-radius:50%;width:5px;height:5px;position:absolute;transform:translate(-50%,-50%)}.section{padding:100px 40px}.section-container{max-width:860px;margin:0 auto}.section-title{font-family:var(--font-display);text-align:center;letter-spacing:-.5px;color:var(--text-primary);margin-bottom:60px;font-size:clamp(30px,4vw,40px);font-weight:600;position:relative}.section-title:after{content:"";background:var(--accent);border-radius:2px;width:36px;height:3px;margin:18px auto 0;display:block}.skills,.contact{background:var(--bg-alt)}.about-grid{grid-template-columns:1.5fr 1fr;align-items:start;gap:56px;display:grid}.about-text p{color:var(--text-secondary);margin-bottom:16px;font-size:15px;line-height:1.85}.about-lead{border-left:2px solid var(--accent);padding-left:20px;font-weight:500;color:var(--text-primary)!important;margin-bottom:28px!important;font-size:18px!important;line-height:1.75!important}.about-text p:not(.about-lead)+p:not(.about-lead){border-top:1px solid var(--border-light);padding-top:6px}.about-education h3,.about-awards h3{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.3px;margin-bottom:16px;font-size:18px;font-weight:600}.edu-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:22px 24px}.edu-school{color:var(--text-primary);font-size:16px;font-weight:600;font-family:var(--font-body);margin-bottom:4px}.edu-degree{color:var(--text-secondary);margin-bottom:4px;font-size:14px}.edu-year{color:var(--text-muted);font-size:13px}.awards-list{margin:0;padding-left:0;list-style:none}.awards-list li{color:var(--text-secondary);padding-left:16px;font-size:14px;line-height:1.8;position:relative}.awards-list li:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;top:10px;left:0}.about-sidebar{flex-direction:column;gap:24px;display:flex}.skills-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.skill-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;transition:all .35s var(--ease);box-shadow:var(--shadow-sm);padding:26px 18px 22px}.skill-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-4px)}.skill-icon{width:30px;height:30px;color:var(--accent);transition:transform .3s var(--ease);margin:0 auto 14px;display:block}.skill-icon svg{width:100%;height:100%;display:block}.skill-card:hover .skill-icon{color:var(--accent-hover);transform:scale(1.12)}.skill-name{color:var(--text-primary);letter-spacing:.2px;margin-bottom:14px;font-size:14px;font-weight:600;display:block}.skill-bar{background:var(--bg-alt);border-radius:2px;height:3px;overflow:hidden}.skill-fill{background:var(--accent);border-radius:2px;width:0;height:100%;transition:width 1s cubic-bezier(.22,.61,.36,1)}.skill-card.visible .skill-fill{width:var(--w)}.projects-grid{gap:20px;display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:0 var(--radius-md) var(--radius-md) 0;transition:all .35s var(--ease);cursor:pointer;box-shadow:var(--shadow-sm);padding:30px 32px;position:relative}.project-card:hover{border-left-color:var(--accent);border-color:var(--border);box-shadow:var(--shadow-md);transform:translate(4px)}.project-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.project-header h3{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.3px;font-size:21px;font-weight:600}.project-arrow{color:var(--accent);opacity:0;transition:all .35s var(--ease);font-size:18px;transform:translate(-8px)}.project-card:hover .project-arrow{opacity:1;transform:translate(0)}.project-desc{color:var(--text-secondary);margin-bottom:18px;font-size:15px;line-height:1.75}.project-techs{flex-wrap:wrap;gap:8px;display:flex}.tech-tag{background:var(--accent-bg);color:var(--accent);letter-spacing:.2px;transition:all var(--transition);border:1px solid #0000;border-radius:50px;padding:4px 14px;font-size:13px;font-weight:500}.tech-tag:hover{border-color:var(--accent);background:var(--accent-bg-hover)}.timeline{padding-left:32px;position:relative}.timeline:before{content:"";background:var(--border);width:1.5px;position:absolute;top:10px;bottom:10px;left:6px}.timeline-item{margin-bottom:32px;position:relative}.timeline-item:last-child{margin-bottom:0}.timeline-dot{background:var(--bg-card);border:2px solid var(--accent);z-index:2;width:11px;height:11px;transition:all var(--transition);border-radius:50%;position:absolute;top:8px;left:-27px}.timeline-item:hover .timeline-dot{background:var(--accent);box-shadow:0 0 0 6px var(--accent-bg)}.timeline-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:all var(--transition);padding:24px 28px}.timeline-item:hover .timeline-content{border-color:var(--border);box-shadow:var(--shadow-md)}.timeline-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:4px;display:flex}.timeline-header h3{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.3px;font-size:18px;font-weight:600}.timeline-period{color:var(--accent);background:var(--accent-bg);white-space:nowrap;border-radius:50px;padding:3px 14px;font-size:13px;font-weight:500}.timeline-company{color:var(--text-secondary);margin-bottom:10px;font-size:15px;font-weight:500}.timeline-highlights{margin:0;padding-left:18px}.timeline-highlights li{color:var(--text-muted);font-size:14px;line-height:1.8}.timeline-highlights li::marker{color:var(--accent)}.contact-intro{text-align:center;color:var(--text-secondary);margin-bottom:44px;font-size:16px}.contact-links{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.contact-link{border-radius:var(--radius-md);font-size:15px;font-weight:500;font-family:var(--font-body);color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border);transition:all var(--transition);box-shadow:var(--shadow-sm);align-items:center;gap:10px;padding:16px 26px;text-decoration:none;display:flex}.contact-link:hover{border-color:var(--accent);box-shadow:var(--shadow-md);color:var(--accent);transform:translateY(-3px)}.contact-icon{font-size:18px}.footer{text-align:center;border-top:1px solid var(--border-light);color:var(--text-muted);font-size:13px;font-family:var(--font-body);letter-spacing:.3px;padding:32px 40px}.project-detail{min-height:100vh;padding:100px 40px 80px}.project-detail-container{max-width:860px;margin:0 auto}.project-back-btn{border:1.5px solid var(--border);color:var(--text-secondary);font-family:var(--font-body);cursor:pointer;transition:all var(--transition);letter-spacing:.2px;background:0 0;border-radius:50px;align-items:center;gap:6px;margin-bottom:28px;padding:8px 20px;font-size:14px;font-weight:500;display:inline-flex}.project-back-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);transform:translate(-2px)}.project-detail-title{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-1px;margin-bottom:20px;font-size:clamp(32px,5vw,44px);font-weight:700;line-height:1.15}.project-detail-techs{margin-bottom:36px}.project-video-container{border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);margin-bottom:40px;overflow:hidden}.project-video{border-radius:var(--radius-lg);background:#000;outline:none;width:100%;display:block}.project-detail-body{margin-bottom:48px}.project-detail-subtitle{font-family:var(--font-display);color:var(--text-primary);letter-spacing:-.3px;border-bottom:1px solid var(--border-light);margin-bottom:20px;padding-bottom:12px;font-size:22px;font-weight:600}.project-detail-content{color:var(--text-secondary);font-size:15px;line-height:1.85}.project-detail-content strong{color:var(--text-primary);font-weight:600}.project-detail-content br+br{content:"";margin-top:16px;display:block}.project-detail-notfound{font-family:var(--font-display);color:var(--text-muted);text-align:center;margin:60px 0 24px;font-size:24px}.project-detail-footer{border-top:1px solid var(--border-light);padding-top:24px}.project-back-link{color:var(--text-secondary);font-size:15px;font-weight:500;font-family:var(--font-body);transition:all var(--transition);letter-spacing:.2px;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:0;text-decoration:none;display:inline-flex}.project-back-link:hover{color:var(--accent);transform:translate(-2px)}a.project-card{color:inherit;text-decoration:none;display:block}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hero-content{animation:fadeInUp .8s var(--ease) both}.hero-content .hero-greeting{animation:fadeInUp .8s var(--ease) .1s both}.hero-content .hero-name{animation:fadeInUp .8s var(--ease) .2s both}.hero-content .hero-title{animation:fadeInUp .8s var(--ease) .3s both}.hero-content .hero-tagline{animation:fadeInUp .8s var(--ease) .4s both}.hero-content .hero-actions{animation:fadeInUp .8s var(--ease) .5s both}.reveal{opacity:0;transition:opacity .8s var(--ease), transform .8s var(--ease);transform:translateY(36px)}.reveal.revealed{opacity:1;transform:translateY(0)}@media (width<=768px){.hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:100px 24px 60px;display:flex}.hero-content{text-align:center}.hero-name{letter-spacing:-1px;font-size:42px}.hero-title{font-size:18px}.hero-tagline{max-width:360px;margin-left:auto;margin-right:auto;font-size:15px}.hero-actions{justify-content:center}.hero-decoration{display:none}.skills-grid{grid-template-columns:repeat(2,1fr);gap:12px}.about-grid{grid-template-columns:1fr;gap:36px}.nav-links{display:none}.nav-toggle{display:flex}.section{padding:64px 24px}.section-title{margin-bottom:40px;font-size:28px}.project-card{padding:22px 24px}.project-card:hover{transform:none}.contact-links{flex-direction:column;align-items:center}.contact-link{justify-content:center;width:100%;max-width:320px}}@media (width<=480px){.hero{padding:80px 20px 48px}.hero-name{font-size:36px}.hero-tagline{max-width:280px;font-size:14px}.skills-grid{grid-template-columns:1fr 1fr;gap:10px}.skill-card{padding:20px 14px 18px}.btn{padding:12px 24px;font-size:14px}.nav-content{padding:0 20px}}.skip-to-content{z-index:9999;background:var(--accent);color:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);padding:10px 20px;font-size:14px;font-weight:600;transition:top .2s;position:absolute;top:-100%;left:16px}.skip-to-content:focus{top:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.btn:focus-visible,.contact-link:focus-visible,.project-back-btn:focus-visible,.project-back-link:focus-visible,.nav-links a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
